Bu yazımda, flutter’da linke tıklanıldığında, linkin uygulama içinde nasıl başlatılacağını göstereceğim. Mesela; Bir uygulamanın içinde twitter bağlantısına tıkladığımızda twitter mobil uygulaması açılıyor veya https://onursahin.net bağlantısına tıkladığımızda link tarayıcıda açılıyor.
Bu yazıdaki işlemler ile flutter’da bağlantıların uygulama içinde nasıl açılacağınız göreceğiz. Bu işlem için url_launcher paketini kullanacağız.
Ayrıca, bonus olarak flutter’da harici uygulamada sms,mail,telefon aramasının nasıl başlatıldığınıda gösterdim.
#1 url_launcher paketinin en son sürümü kopyalayın ve ardından pubspec.yaml dosyasında ilgili alana ekleyin ve terminalde flutter pub get
komutunu çalıştırın.
dependencies: flutter: sdk: flutter url_launcher: ^6.0.6 //güncel sürüm için; https://pub.dev/packages/url_launcher
#2 Paketi çalıştığınız dosyada içeri aktarın. import 'package:url_launcher/url_launcher.dart';
#3 Uygulamada Açma; Şimdi, kullanıcı bir URL’yi uygulamada açmak için her tıkladığında çağrılacak fonksiyonu oluşturalım.
_launchURLApp() async { const url = 'https://onursahin.net'; if (await canLaunch(url)) { await launch(url, forceSafariVC: true, forceWebView: true); } else { throw 'Could not launch $url'; } }
- Fonksiyonun ismini _launchURLApp olarak belirliyoruz.
- Url değişkenine website adresini atıyoruz ve const olarak belirliyoruz.
URL’yi uygulama içinde açmak için iki koşulun gerçekleşmesi gerekir.
- forceWebView: true – web sitesinin, uygulamanın içinde açılması için web görünümünü başlatır.
- forceSafariVC: true — iOS cihazlarda, web sitesini varsayılan tarayıcı dışında Safari View Controller’da açmasını sağlar.
#4 Fonksiyonu Çağırma;
RaisedButton( onPressed: _launchURLApp, child: Text('Uygulamada Aç'), ),
Uygulamada Aç isimli buton oluşturduk ve onPressed (çalıştırıldığında gerçekleştiren eylem) özelliğine oluşturmuş olduğumuz fonksiyonu atadık.
Tam Kod:
import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:url_launcher/url_launcher.dart'; void main() => runApp(MyApp()); _launchURLApp() async { const url = 'https://onursahin.net'; if (await canLaunch(url)) { await launch(url, forceSafariVC: true, forceWebView: true); } else { throw 'Could not launch $url'; } } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Uygulamada Link Açma'), backgroundColor: Colors.green, ), body: SafeArea( child: Center( child: Column( children: [ Container( height: 250.0, ), Container( height: 20.0, ), RaisedButton( onPressed: _launchURLApp, child: Text('Uygulamada Aç'), textColor: Colors.black, padding: const EdgeInsets.all(5.0), ), ], ), ), ), ), ); } }
Kod Çıktısı:
BONUS – Harici uygulamada başlatma.
#1 Tarayıcıda Açma
Fonksiyon
_launchURLBrowser() async { const url = 'https://onursahin.net'; if (await canLaunch(url)) { await launch(url); } else { throw 'Could not launch $url'; } }
Tarayıcıda açma; forceWebView ve forceSafariVC varsayılan olarak “false” olarak ayarlanmıştır.
Fonksiyonu Çalıştırmak için;
RaisedButton( onPressed: _launchURLBrowser, child: Text('Tarayıcıda Aç'), ),
#2 Sms Gönderme
_textMe() async { const uri = 'sms:+90000000000'; if (await canLaunch(uri)) { await launch(uri); } else { throw 'Could not launch $uri'; } }
#3 Arama Yapma
_makeCall() async { String telephoneUrl = "tel:+9000000000000"; if (await canLaunch(telephoneUrl)) { await launch(telephoneUrl); } else { throw "Error"; } }
#4 Mail Gönderme
_sendMail() async { // Android and iOS const mailTo = "test@gmail.com"; //gönderilecek mail adresi const dummyMessage = "Merhaba Dünya"; const subjectText = "Konu"; const uri = 'mailto:$mailTo?subject=$subjectText&body=$dummyMessage'; if (await canLaunch(uri)) { await launch(uri); } else { throw 'Could not launch $uri'; } }