Я хочу создать гиперссылку на дисплей в моем трепыхаться приложение.
Гипер-ссылки должны быть встроены в "текст" или аналогичном текстовом виды как:
Последняя книга, которую купила в <а href='#'>этот</а>
Любой намек на это?
Просто оберните чернильницей вокруг текстовый виджет и поставить UrlLauncher (из библиотеки) к атрибуту предприятий. Установите UrlLauncher как пакет трепыхаться, прежде чем использовать его ниже.
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')
),
),
),
);
}
}
Вы можете поставить стиль для текстового виджета, чтобы сделать его похожим на ссылку.
<Н2>обновление</Н2>
После изучения вопроса я нашел другое решение для реализации 'в линию' ссылки, которые вы просили. Вы можете использовать виджет richtext с с приложенными 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');
},
),
],
),
),
),
),
);
}
}
Таким образом, вы действительно можете выделить одно слово и сделать гиперссылку из него ;)
Трепыхаться не't имеют встроенную поддержку гиперссылки, но вы можете поддельные его самостоятельно. Там's в качестве примера в Галерея'с ящиком.дротик.
Вы можете обернуть ваш "текст" в GestureDetector и ручки нажмите в 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
}
)
Если вы хотите сделать его еще более как ссылка, вы можете добавить подчеркивание:
new Text("Hello Flutter!", style: new TextStyle(color: Colors.blue, decoration: TextDecoration.underline),)
и результат:
Вы можете использовать flutter_linkify пакет <БР> https://pub.dev/packages/flutter_linkify <БР> Просто хочу предоставить другой вариант. <БР> Пакет будет разделить текст и выделите HTTP или https автоматически <БР> Объединить url_launcher плагина вы можете запустить URL-адрес <БР> Вы можете посмотрите пример ниже: <БР>
полный код ниже <БР>
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';
}
}
}
Альтернативная (или нет) способ ставить кликабельные ссылки в вашем приложении (для меня он просто работал, что путь):
1 - добавить пакет url_launcher в pubspec.файл YAML
(пакет версии 5.0 не't работа для меня, поэтому я'м с помощью 4.2.0+3).
dependencies:
flutter:
sdk: flutter
url_launcher: ^4.2.0+3
2 - импорт и использовать, как показано ниже.
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';
}
}
}
Можно использовать пакеты, как ссылка,Link_Text,linkify и т. д.. Для этой цели.
Просто поиск ссылка в пабе.пакеты Дэв, и вы получите хорошие пакеты легко добавить ссылки.