您可以将
Future<String>
转换为 String
吗?
每次启动应用程序时,它都应该从数据库获取数据,将其存储在 .csv 文件中,读取 .csv 文件并更新一些字符串变量。我希望我的应用程序能够离线运行。
我正在寻找这样的解决方案:
String string;
Future<String> = futureString;
if (futureString == null) {
string = '{standard value}';
} else {
string = futureString;
}
希望你们能看到照片并帮助我!谢谢!
您只需
await
即可获得价值:
string = await futureString;
由于值为
Future<String>
,因此 await
关键字将等待任务完成并返回值,而不移至下一条语句。
请注意,要使用
await
,您必须制定自己的方法 async
ronous yourMethod() async {}
或者使用
then
回调:
futureString.then((value) {
string = value;
});
两者都在做同样的事情,但是当你使用回调时,你不需要使你的方法异步,但异步会提高可读性(根据场景使用一个)。
首先你需要学习 Dart 语言中的异步编程。
这里有一个示例,可以帮助您了解
Future
在 Dart 中的工作原理。
void main() async {
Future<String> futureString = Future.value('Data from DB');
print(futureString); // output: Instance of '_Future<String>'
print(await futureString); // output: Data from DB
if (await futureString == null) {
print('No data');
}
}
同样的问题已经解决了,如下所示: 串串; 未来 futureString;
string = futureString.get();