首页 > 解决方案 > 为什么等待飞镖中的path_provider?

问题描述

为什么 path_provider 中的目录方法会像这样等待?他们不是通过互联网呼叫网络。

Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;

Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;

编辑:我认为我不够具体。我从方法签名中了解到它返回一个未来。我更多地问为什么它是未来,为什么这些方法是异步的。

是不是因为它们有点像 unix 文件系统的写入/读取,即阻塞?

标签: dart

解决方案


因为底层代码是异步的,并且返回一个Future. 要获取从 a 返回的值,Future您必须使用await.then()

path_provider用于MethodChannel调用本机代码,MethodChannel.invokeMethod()函数是异步的。具体来说,本机代码(平台通道)的接口通过发送消息并等待响应来工作。它异步执行此操作,因此在等待您的请求在本机端完成时不会锁定您的应用程序。

Flutter 特定平台的 API 支持不依赖于代码生成,而是依赖于灵活的消息传递方式:

  • 应用程序的 Flutter 部分通过平台通道向其主机、应用程序的 iOS 或 Android 部分发送消息。

  • 主机监听平台频道,接收消息。然后,它使用本地编程语言调用任意数量的特定于平台的 API,并将响应发送回客户端,即应用程序的 Flutter 部分。

期货和异步代码不仅仅用于网络/互联网相关的工作。


推荐阅读