文本小部件不会自动识别链接。
不过,您可以使用 TextSpan 小部件和 url_launcher 将操作插入到文本中,有点像这样:
RichText(
text: TextSpan(
children: [
TextSpan(text: 'some text'),
TextSpan(
text: url,
style: new TextStyle(
color: Colors.blue,
decoration: TextDecoration.underline
),
recognizer: TapGestureRecognizer()
..onTap = () async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
},
),
]
),
)
您可以将其包装到一个类中并为自己制作一个小的 LinkText 小部件。
flutter_linkify 的作用是自动检测文本中的 URL 和电子邮件 ID 并链接它们。
您也可以使用正则表达式来执行此操作。例如。为了识别 url,你可以有类似的东西:
bool _isLink(String input) {
final matcher = new RegExp(
r"(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)");
return matcher.hasMatch(input);
}
您必须稍作修改以获取子字符串并将其用作文本跨度中的 url!