gpt4 book ai didi

dart - 为什么等待 dart 中的 path_provider?

转载 作者:行者123 更新时间:2023-12-02 09:07:39 24 4
gpt4 key购买 nike

为什么 path_provider 中的目录方法会这样等待?他们不是通过 Internet 调用网络。

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

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

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

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

最佳答案

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

path_provider 使用 MethodChannel调用 native 代码,MethodChannel.invokeMethod() 函数是异步的。具体来说, native 代码 (platform channels) 的接口(interface)通过发送消息并等待响应来工作。它以异步方式执行此操作,因此在等待您的请求在 native 端完成时不会锁定您的应用。

Flutter’s platform-specific API support does not rely on code generation, but rather on a flexible message passing style:

  • The Flutter portion of the app sends messages to its host, the iOS or Android portion of the app, over a platform channel.

  • The host listens on the platform channel, and receives the message. It then calls into any number of platform-specific APIs—using the native programming language—and sends a response back to the client, the Flutter portion of the app.

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

关于dart - 为什么等待 dart 中的 path_provider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56192733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com