为什么要这样等待path_provider中的目录方法?他们没有通过互联网拨打网络。
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
编辑: 我认为我不够具体。我从方法签名中了解到它返回了未来。我更多地询问为什么这是未来,为什么这些方法是异步的。
是因为它们有点像unix文件系统的写/读,即阻塞?
答案 0 :(得分:1)
因为底层代码是异步的,并返回Future
。要获取从Future
返回的值,您必须使用await
或.then()
。
path_provider
使用MethodChannel
调用本机代码,而MethodChannel.invokeMethod()
函数是异步的。具体来说,本机代码(platform channels)的接口通过发送消息并等待响应来工作。它是异步执行的,因此在等待本机端请求完成时不会锁定您的应用程序。
Flutter的特定于平台的API支持不依赖于代码生成,而是依赖于灵活的消息传递样式:
应用程序的Flutter部分通过平台通道将消息发送到其主机(应用程序的iOS或Android部分)。
主机在平台通道上侦听并接收消息。然后,它使用本机编程语言调用任何数量的特定于平台的API,并将响应发送回客户端,即应用程序的Flutter部分。
未来和异步代码不仅用于网络/互联网相关的工作。
答案 1 :(得分:0)
path_provider
的API是异步的,因为它与平台本地的Android或iOS代码以及Flutter uses an asynchronous message-passing system for that communication进行通信。