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';
}
}