如何在颤动中交织异步函数和同步函数

Posted

技术标签:

【中文标题】如何在颤动中交织异步函数和同步函数【英文标题】:How to intertwine Async functions and sync functions in flutter 【发布时间】:2020-09-19 19:04:50 【问题描述】:

我是 Flutter 的初学者,不太了解如何在 Flutter 中使用 Async 函数。 例如,

Future <String> readData() async 
  final file = await localFile;
  String body = await file.readAsString();
  return body;

所以在这段代码中,我从本地文件中检索了一些数据。但我想在应用程序启动时运行这个函数并想显示结果。

不幸的是,我在 main.dart 中的构建函数是同步的,当我这样做时:

child : Text(readData());

它不起作用,因为它返回一个 Future 。我也不能使用 await 关键字,因为它 Build 不是异步的。 如何等待获取此字符串并显示它?

【问题讨论】:

【参考方案1】:

您可以尝试使用 FutureBuilder

  child: FutureBuilder<String>(
      builder: (context, data) 
        return Text(data.hasData ? data.data : '');
      ,
      future: readData(),
  ),

【讨论】:

你也可以在 StatefullWidget 和 setState 中使用一个变量,当 file.readAsString() 完成时。【参考方案2】:

Dart Streams - Flutter in Focus

这很好解释我认为应该帮助你

【讨论】:

谢谢你,你能给我一些关于我能做什么的代码上下文吗?

以上是关于如何在颤动中交织异步函数和同步函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在nodejs中结合同步和异步功能

如何从同步代码 Python 中调用异步函数

如何在 javascript 中同步异步映射函数

Javascript:在函数中混合异步与同步(缓存和 Ajax 请求)

如何在同步函数中等待 JavaScript 中的异步调用?

如何在tornado中以异步的方式调用同步函数