Bu yazımda, flutter’da metin içine nasıl köprü eklenir onu göstereceğim. Mobil uygulamaların çoğunda, belirli bir bölüm veya bir makale hakkında daha fazla bilgi almak için kullanıcıları bazı harici web sitelerine yönlendiren bağlantılar vardır. Bunu Flutter uygulamamızda nasıl yapacağımızı öğrenelim…
Flutter’da metne bağlantı eklemek için yerleşik bir widget yoktur. Ancak link eklemek için kullanabileceğimiz bazı eklentiler vardır.
Kullanıcıyı harici web sitesine yönlendirmemiz gerekirse bunu yapmak için url_launcher eklentisini kullanacağız. Eklentiyi Pubspec.yaml dosyasına ekleyin.
dependencies: url_launcher: ^6.0.2
flutter pub get
Ardından, eklentiyi kullanmak istediğiniz yerde içe aktarın.
import 'package:flutter/gestures.dart'; import 'package:url_launcher/url_launcher.dart';
Genellikle “daha fazla oku” gibi bir bağlantı eklediğimizde, onu mevcut bir paragrafın parçası olarak ekleriz. Benzersiz stil eklemek için bazı ifadeleri ayırmamız gerekir bunun için TextSpan widget’ını kullanmaya izin veren RichText widget’ını kullanmalıyız.
RichText; metin içinde farklı stiller kullanmaya yarar. TextSpan için, mavi rengi ekleyerek metin stilinin bağlantı gibi görünmesini sağlayacaktır.
RichText( text: new TextSpan( children: [ new TextSpan( text: 'Blogumu ziyaret etmek için ', style: new TextStyle(color: Colors.black), ), new TextSpan( text: ' Buraya Tıkla', style: new TextStyle(color: Colors.blue), recognizer: new TapGestureRecognizer() ..onTap = () { launch('https://onursahin.net'); }, ), ], ), ),
Tam Kod:
import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; void main() { runApp(new MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( home: new Scaffold( appBar: new AppBar( title: new Text('Flutter Köprü'), ), body: new Center( child: new RichText( text: new TextSpan( children: [ new TextSpan( text: 'Blogumu ziyaret etmek için ', style: new TextStyle(color: Colors.black), ), new TextSpan( text: ' Buraya Tıkla', style: new TextStyle(color: Colors.blue), recognizer: new TapGestureRecognizer() ..onTap = () { launch('https://onursahin.net'); }, ), ], ), ), ), ), ); } }
Çıktı:
Linkify kullanarak Metin URL’sini Tıklanabilir Bağlantıya Çevirme
Öncelikle projenize flutter_linkify eklentisi ekleyin .
dependencies: flutter_linkify: ^4.1.0
Ardından eklentiyi içeri aktarın.
import 'package:flutter_linkify/flutter_linkify.dart';
linkify aşağıdaki gibi kullanabilirsiniz.
Linkify( onOpen: (link) { print("Linkify link = ${link.url}"); }, text: "Linkify eklentisi - https://onursahin.net", style: TextStyle(color: Colors.black), linkStyle: TextStyle(color: Colors.green), ),
Tam Kod:
import 'package:flutter/material.dart'; import 'package:flutter_linkify/flutter_linkify.dart'; void main() { runApp(new MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( home: new Scaffold( appBar: new AppBar( title: new Text('Flutter Linkify'), ), body: new Center( child: Linkify( onOpen: (link) { print("Linkify link = ${link.url}"); }, text: "Linkify eklentisi - https://onursahin.net", style: TextStyle(color: Colors.black), linkStyle: TextStyle(color: Colors.green), ), ), ), ); } }
Çıktı:
Bağlantı metninde http: // veya https: // nasıl gösterilir?
Bunun gerçekleşmesi için humanize seçeneğinin değerini false olarak belirleyin.
options: LinkifyOptions(humanize: false),
Bağlantıdan www kaldırma
options: LinkifyOptions(removeWww: true)
Eklemek için: false