在 flutter 应用程序中显示降价文件并使用参考链接
display a markdown file in flutter app and use the reference links
我正在尝试获取降价文件,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(),
);
}),
);
}
有办法吗?因为 Google 根本没有帮助,我严重怀疑这是否可能。
Flutter 对额外的库有很好的支持。还有一个用于 markdown 文件的库,你可以找到它 here.
我必须在 class 之外创建一个变量,然后为它创建一个 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;
}
我正在尝试获取降价文件,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(),
);
}),
);
}
有办法吗?因为 Google 根本没有帮助,我严重怀疑这是否可能。
Flutter 对额外的库有很好的支持。还有一个用于 markdown 文件的库,你可以找到它 here.
我必须在 class 之外创建一个变量,然后为它创建一个 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;
}