Saya ingin membuat hyperlink ke layar saya Bergetar aplikasi.
Hyper link harus tertanam dalam Teks
atau mirip tampilan teks seperti:
Terakhir pesan saya adalah <a href='#'>ini</a>
Setiap petunjuk untuk melakukan hal ini?
Hanya membungkus botol Tinta di sekitar Teks widget dan pasokan UrlLauncher (dari layanan perpustakaan) untuk onTap atribut. Menginstal UrlLauncher seperti Kepakan paket sebelum menggunakannya di bawah ini.
import 'package:flutter/material.dart';
import 'package:flutter/services.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('UrlLauchner'),
),
body: new Center(
child: new InkWell(
child: new Text('Open Browser'),
onTap: () => launch('https://docs.flutter.io/flutter/services/UrlLauncher-class.html')
),
),
),
);
}
}
Anda dapat memberikan gaya ke widget Teks untuk membuatnya terlihat seperti sebuah link.
Setelah melihat ke dalam masalah ini sedikit saya menemukan solusi yang berbeda untuk melaksanakan 'di line' hyperlink yang anda minta. Anda dapat menggunakan RichText Widget dengan tertutup TextSpans.
import 'package:flutter/material.dart';
import 'package:flutter/services.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('UrlLauchner'),
),
body: new Center(
child: new RichText(
text: new TextSpan(
children: [
new TextSpan(
text: 'This is no Link, ',
style: new TextStyle(color: Colors.black),
),
new TextSpan(
text: 'but this is',
style: new TextStyle(color: Colors.blue),
recognizer: new TapGestureRecognizer()
..onTap = () { launch('https://docs.flutter.io/flutter/services/UrlLauncher-class.html');
},
),
],
),
),
),
),
);
}
}
Dengan cara ini anda dapat benar-benar menyorot satu kata dan membuat hyperlink dari itu ;)
Bergetar doesn't memiliki built-in dukungan hyperlink tetapi anda dapat palsu itu sendiri. Ada's contoh di Gallery's laci.dart.
Anda dapat membungkus Teks
dalam GestureDetector
dan menangani klik di onTap()
.
GestureDetector(
child: Text("Click here", style: TextStyle(decoration: TextDecoration.underline, color: Colors.blue)),
onTap: () {
// do what you need to do when "Click here" gets clicked
}
)
Anda dapat menggunakan paket flutter_linkify
https://pub.dev/packages/flutter_linkify
Hanya ingin memberikan pilihan lain.
Paket akan membagi teks dan sorot http/https otomatis
Menggabungkan plugin url_launcher anda dapat memulai url
Anda bisa cek contoh di bawah ini:
penuh kode di bawah
import 'package:flutter/material.dart';
import 'package:flutter_linkify/flutter_linkify.dart';
import 'dart:async';
import 'package:url_launcher/url_launcher.dart';
void main() => runApp(new LinkifyExample());
class LinkifyExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'flutter_linkify example',
home: Scaffold(
appBar: AppBar(
title: Text('flutter_linkify example'),
),
body: Center(
child: Linkify(
onOpen: _onOpen,
text: "Made by https://cretezy.com \n\nMail: [email protected] \n\n this is test http://pub.dev/ ",
),
),
),
);
}
Future<void> _onOpen(LinkableElement link) async {
if (await canLaunch(link.url)) {
await launch(link.url);
} else {
throw 'Could not launch $link';
}
}
}
Alternatif (atau tidak) cara untuk menempatkan link yang dapat diklik di aplikasi anda (bagi saya itu hanya bekerja cara yang):
1 - Tambahkan url_launcher paket anda pubspec.file yaml
(paket versi 5.0 didn't bekerja dengan baik untuk saya, jadi saya'm menggunakan 4.2.0+3).
dependencies:
flutter:
sdk: flutter
url_launcher: ^4.2.0+3
2 - Impor dan gunakan seperti di bawah ini.
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(MaterialApp(
title: 'Navigation Basics',
home: MyUrl(),
));
}
class MyUrl extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Url Launcher'),
),
body: Center(
child: FlatButton(
onPressed: _launchURL,
child: Text('Launch Google!',
style: TextStyle(fontSize: 17.0)),
),
),
);
}
_launchURL() async {
const url = 'https://google.com.br';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
}