能否将Future<String>
转换为String
?
每次启动应用程序时,它都应该从数据库中获取数据,将其存储在.csv文件中,读取.csv文件并更新一些字符串变量。我希望我的应用程序可以离线运行。
我正在寻找这样的解决方案:
String string;
Future<String> = futureString;
if (futureString == null) {
string = '{standard value}';
} else {
string = futureString;
}
我希望你们能得到图片,并能帮助我!谢谢!
答案 0 :(得分:0)
您只需要await
来获取值:
string = await futureString;
由于值是Future<String>
,因此 await
关键字将一直等到任务完成并返回值,而不移至下一条语句。
请注意,要使用await
,您必须将方法async
设为yourMethod() async {}
或使用then
回调:
futureString.then((value) {
string = value;
});
两者都在做相同的事情,但是当您使用回调时,不需要使方法异步,但是异步将提高可读性(根据情况使用一种方法)。
答案 1 :(得分:0)
首先,您需要学习Dart语言中的Asynchronous programming。
下面是一个示例,可以帮助您稍微了解Future
在Dart中的工作原理。
void main() async {
Future<String> futureString = Future.value('Data from DB');
print(futureString); // output: Instance of '_Future<String>'
print(await futureString); // output: Hi there
if (await futureString == null) {
print('No data');
}
}