假设我有一个SingleChildScrollView
,它的内容是从一个文件中读取的:
singleChildScrollView(
padding: EdgeInsets.all(8.0),
child: nw Text(
getTextFromFile(), //<---read from file
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 19.0,
),
));
Future<String> getFileData(String path) async {
return await rootBundle.loadString(path);
}
Future<String> getTextFromFile() async {
return getFileData("test.txt");
}
出现以下错误:
The argument type 'Future<String>' can't be assigned to the parameter
type 'String'.
如何解决这一问题?
6条答案
按热度按时间7uzetpgm1#
使用FutureBuilder应该可以解决你的问题。我修改了你的代码,这样你就可以看到如何使用它。
initialData
不是必需的。z2acfund2#
StatefulWidget
可用于此目的,声明成员变量String _textFromFile = ""
;并在将来解析时使用setState()
方法更新其值。我从构造函数调用了
getTextFromFile()
方法,但是您可以从任何地方调用它。运行代码:
wxclj1h53#
此处简单回答=〉
调用函数的类:
和功能:
dced5bon4#
下面是一个类似的问题:
flutter / dart error: The argument type 'Future' can't be assigned to the parameter type 'File'
这里提出的解决方案非常优雅,并且工作正常。如果IDE要求使用
Type
而不是Future<Type>
,请将await
放在该参数前面1tu0hz3e5#
获取初始化数据的另一个解决方案是在
initState()
中调用getTextFromFile()
,用新字符串设置状态,然后在小部件中使用该字符串:t40tm48m6#
我想再补充一个答案,因为我测试了其他的答案,我得到了一个错误。将异步部分(加上setState)从构造函数移到
initState()
,为我解决了这个问题。好好享受