为什么要等待dart中的path_provider?

时间:2019-05-17 19:49:19

标签: dart

为什么要这样等待path_provider中的目录方法?他们没有通过互联网拨打网络。

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

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

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

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

2 个答案:

答案 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进行通信。