Flutter’da Linkleri Uygulama Üzerinde Açma: url_launcher

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.

  1.  forceWebView: true – web sitesinin, uygulamanın içinde açılması için web görünümünü başlatır.
  2. 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ı:

FLUTTER LİNKLERİ UYGULAMA ÜZERİNDE AÇMA

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

 

Yorum Yap