如何在颤动的降价中添加超链接到文本

Posted

技术标签:

【中文标题】如何在颤动的降价中添加超链接到文本【英文标题】:How to add hyperlink to text in a markdown in flutter 【发布时间】:2020-07-04 09:23:24 【问题描述】:

我想在屏幕底部添加一个超链接,用于读取 Markdown 小部件。 我试图在 markdown 文件中包含超链接,但 Flutter 没有启动它。

然后我尝试了这个:

Widget build(BuildContext context) 
    return Scaffold(
      appBar: AppBar(
        title: Text('Protective measures'),
      ),
      body: Column(
        children: <Widget>[
          Flexible(
            child: FutureBuilder(
              future: DefaultAssetBundle.of(context)
                  .loadString("assets/docs/protective_measures.md"),
              builder:
                  (BuildContext context, AsyncSnapshot<String> snapshot) 
                if (snapshot.hasData) 
                  return Markdown(
                    data: snapshot.data,
                    styleSheet: MarkdownStyleSheet(
                      textAlign: WrapAlignment.start,
                      p: TextStyle(
                        fontSize: 16,
                        color: isDark ? Colors.white : Colors.black,
                      ),
                      h2: TextStyle(
                        fontSize: 20,
                        fontWeight: FontWeight.bold,
                        color: isDark ? Colors.white : Colors.black,
                      ),
                      h1: TextStyle(
                        fontWeight: FontWeight.bold,
                        fontSize: 25,
                        color: isDark ? Colors.white : Colors.black,
                      ),
                    ),
                  );
                

                return Center(
                  child: CircularProgressIndicator(),
                );
              ,
            ),
          ),
          InkWell(
            child: Text(
              'My Hyperlink',
              style: TextStyle(
                fontWeight: FontWeight.bold,
                fontSize: 20,
                color: Colors.blue,
                decoration: TextDecoration.underline
              ),
            ),
            onTap: () => launch('https://***.com'),
          ),
        ],
      ),
    );
  

结果并不是我想要的。我想要屏幕底部的超文本,就在 Markdown 之后。我也尝试使用 ListView 而不是 Column 但它不起作用。

有什么提示吗?

【问题讨论】:

如何为网页上的链接设置手形光标? 【参考方案1】:

对于插件flutter_markdown,你可以这样做

import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:url_launcher/url_launcher.dart';

final String _markdownData = "-This is [Google link](https://www.google.com)";

// view
MarkdownBody(
    data: _markdownData,
    onTapLink: (text, url, title)
        launch(url);
    ,
)

更新 Flutter_markdown 0.5.1 或更低版本:

MarkdownBody(
    data: _markdownData,
    onTapLink: (url) 
        launch(url);
    ,
)

【讨论】:

添加语法更新以配合当前版本的flutter_markdown 至少从flutter_markdown 0.5.2开始,TapLinkCallback返回3个参数,所以你需要做onTapLink: (text, url, title) =&gt; launch(url), 谢谢,如果您知道,请指导如何使用#someid 链接滚动到同一页面 对于上一个颤振/飞镖版本,启动函数不接受空参数。使用:launch(url!)【参考方案2】:

我明白了。 Markdown() 小部件有一个 onTapLink 方法,我只需要这样做:

onTapLink(url)
  launch(url);

【讨论】:

以上是关于如何在颤动的降价中添加超链接到文本的主要内容,如果未能解决你的问题,请参考以下文章

如何将颤动的日期选择器值添加到文本字段?

如何在颤动中以对象形式在列表中添加文本字段值

如何消除颤动上文本上方和下方的间隙

如何在文本字段中颤动的值末尾设置光标位置?

java如何在文本中的关键字自动加超链接

如何将图像 URL 链接到另一个 URL 以在颤动中显示有关第一个 URL 的一些信息?