为什么 dart 中的 path_provider 会被等待?

Ali*_*ent 4 dart

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

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

Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
Run Code Online (Sandbox Code Playgroud)

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

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

Her*_*tar 6

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

\n

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

\n
\n

Flutter\xe2\x80\x99s 平台特定的 API 支持不依赖于代码生成,而是依赖于灵活的消息传递风格:

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

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

    \n
  • \n
\n
\n

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

\n