在flutter app中显示一个markdown文件并使用参考链接

Car*_*oks 5 markdown dart flutter

我正在尝试获取一个 Markdown 文件,contents.md,然后在我的应用程序的页面上显示它,但我希望能够使用我添加的指向不同文件的参考链接,chapter1.md,chapter2 .md、chapter3.md 等。我已经能够显示从 contents.md 格式化的降价,但链接不起作用。

Widget build(BuildContext context) {
    return Scaffold(appBar: AppBar(title: Text("Flutter Markdown"),),
      body: FutureBuilder(
          future: rootBundle.loadString("assets/manual/contents.md"),
          builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
            if (snapshot.hasData) {
              return Markdown(data: snapshot.data);
            }

            return Center(
              child: CircularProgressIndicator(),
          );
       }),
    );
  }
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?因为谷歌根本没有帮助,我严重怀疑这是可能的。

Car*_*oks 3

我必须在类之外创建一个变量,然后为其创建一个 getter 和 setter,然后为未来的构建器创建一个方法,并在设置变量后调用 setState(){} 。

String file = "contents.md";
class _ManualState extends State<Manual> {

  @override
    Widget build(BuildContext context) {

        return Scaffold(
          appBar: AppBar(title: Text(getFile()),),
          body: displayMarkdown(getFile())
        );
      }
    FutureBuilder<String> displayMarkdown(String file){

        return FutureBuilder(
          future: DefaultAssetBundle.of(context).loadString
            ("assets/manual/" + file),
          builder: (BuildContext context, AsyncSnapshot<String> snapshot){
            if (snapshot.hasData) {
              return Markdown(data: snapshot.data, onTapLink: (link){
                setFile(link);
                setState((){});
              },
              );
            }
            return Center(
              child: CircularProgressIndicator(),
            );
          },
        );
      }
}
String getFile() {
  return file;
}

String setFile(String name) {
  file = name;
  return file;
}
Run Code Online (Sandbox Code Playgroud)