我有一个关于文本小部件无法检测到有链接的问题。
稍后我将收到来自服务器的文本响应,如图所示。响应采用文本和链接的形式。
问题是 flutter 上的文本小部件无法检测到它。如何使文本中的链接可检测和可点击?
我已阅读并搜索过此内容,但找不到。因为大部分链接文本必须由您自己输入。虽然我的问题是文本自动存在,因为它是来自服务器的响应
谁能帮我找到答案?
先感谢您
最佳答案
文本小部件 不 自动识别链接。
但是,您可以使用 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!
关于android - 自动检测链接抖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67481325/