【问题标题】:auto detect link flutter自动检测链接抖动
【发布时间】:2021-08-01 11:59:25
【问题描述】:

我有一个关于文本小部件无法检测到链接的问题。

稍后我会从服务器收到一个文本响应,如图所示。响应是文本和链接的形式。

问题是颤振上的文本小部件无法检测到它。如何使文本中的链接可检测和可点击?

我已阅读并搜索过此内容,但找不到。因为大部分链接文字必须自己输入。虽然我的问题是文本自动存在,因为它是来自服务器的响应

谁能帮我找到答案? 提前谢谢你

【问题讨论】:

标签: android flutter text hyperlink


【解决方案1】:

文本小部件不会自动识别链接。

不过,您可以使用 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!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2012-04-26
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多