我想使用功能修改文本资产(.txt文件)中的数据,并将其显示在Text()
小部件中。 myFunction
将数据类型String
作为参数并返回数据类型String
。
我已经阅读了文档。 Loading Asset from Image,此操作无效。我也尝试过Suragch's Answer的解决方案。
在这种情况下,我应该使用FutureBuilder
,但是我不明白如何使它在这里工作(我是新手)。我将使用另一个功能来修改文件中的数据,然后显示。
这是我尝试过的事情之一:
Widget build(BuildContext context) {
Future<String> aloadAsset(BuildContext context) async {
return await DefaultAssetBundle.of(context).loadString('assets/help.txt');
}
String helps = myFunction(await aloadAsset(context));
return Scaffold(
body: Text(helps)
);
}
将值从await aloadAsset(context)
分配给String时,出现以下错误:Unexpected text 'await'.
和A value of type 'Future<String>' can't be assigned to a variable of type 'String'.
答案 0 :(得分:0)
await
关键字只能在async
函数中使用。您可以在这里执行以下操作:
将小部件设置为StatefulWidget
,然后在状态类中:
String helps = "";
在initState()
方法中:
aloadAsset();
并将您的功能更改为:
aloadAsset() async {
helps = myFunction(await rootBundle.loadString('assets/help.txt'));
setState((){});
}
别忘了添加导入
import 'package:flutter/services.dart' show rootBundle;
答案 1 :(得分:0)
这是从文件中读取text
的方法,您必须修改Build
函数以使其包含FutureBuilder
。然后,您必须将aloadAsset
函数移出构建版本:
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: aloadAsset(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if(if(snapshot.hasData)){
return Scaffold(
body: Text(snapshot.data)
);
}
return Scaffold(
body: Text('No Available data') //This will be returned in case you didn't receive data yet or in the case of a file error.
);
}
}
Future<String> aloadAsset(BuildContext context) async {
return await DefaultAssetBundle.of(context).loadString('assets/help.txt');
}