可以将Future <String>转换为字符串吗?颤振/飞镖

时间:2020-02-27 17:16:15

标签: string flutter dart future

能否将Future<String>转换为String? 每次启动应用程序时,它都应该从数据库中获取数据,将其存储在.csv文件中,读取.csv文件并更新一些字符串变量。我希望我的应用程序可以离线运行。

我正在寻找这样的解决方案:

String string;
Future<String> = futureString;

if (futureString == null) {
  string = '{standard value}'; 
} else {
  string = futureString;
}

我希望你们能得到图片,并能帮助我!谢谢!

2 个答案:

答案 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');
  }
}