【问题标题】: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://stackoverflow.com'),
          ),
        ],
      ),
    );
  }

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

有什么提示吗?

【问题讨论】:

  • 如何为网页上的链接设置手形光标?

标签: android ios flutter dart markdown


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多