Flutter 有没有办法同步获取文档目录?

Flutter 有没有办法同步获取文档目录?,flutter,dart,Flutter,Dart,在显示第一个屏幕之前,我需要加载一个小的设置文件 我现在正在使用PathProvider插件,但其中的所有函数都是异步的 有没有办法同步查找应用程序文档目录,然后在其上使用dart:io同步功能?而不是显示一秒钟的无限小数的占位符 编辑:考虑到前两个答案,可能我的解释真的很糟糕。答案建议我仍然使用asynccode。问题是,我需要runApp()之前的目录,并且我不希望我的void main()是async,因为这肯定会破坏任何启动动画 就我所见,PathProviderAPI是异步的,只是因为

在显示第一个屏幕之前,我需要加载一个小的设置文件

我现在正在使用PathProvider插件,但其中的所有函数都是异步的

有没有办法同步查找应用程序文档目录,然后在其上使用dart:io同步功能?而不是显示一秒钟的无限小数的占位符

编辑:考虑到前两个答案,可能我的解释真的很糟糕。答案建议我仍然使用
async
code。问题是,我需要
runApp()
之前的目录,并且我不希望我的
void main()
async
,因为这肯定会破坏任何启动动画

就我所见,PathProviderAPI是异步的,只是因为它使用了
MethodChannel
,这是异步的,但是PathProvider中它背后的函数几乎是同步的


我想问的是——在Android或IOS上,有没有办法知道同步代码中的ApplicationDocumentsDirectory?可能根本不使用特定于平台的代码?

在等待IO操作完成时,同步IO将阻止事件循环完成其他异步代码,因此除了测试之外,您应该始终选择异步IO函数。您应该能够通过等待呼叫来有效地实现同步行为

请参阅具有以下警告的文档(适用于
dart:IO
中标记为同步的所有IO调用):

下面的操作将阻止调用线程等待来自网络的响应。在等待这些操作完成时,线程不能处理任何其他事件。RawSynchronousSocket不适用于需要高性能或异步I/O的应用程序,如服务器


您可以出于同样的目的使用
FutureBuilder
,而无需担心执行问题

它将允许您在后台执行流程,并允许您显示初始屏幕UI,直到您指定的流程完成且数据准备就绪


注意:任何需要访问设备本机方法通道的插件或代码在默认情况下都是
async
,因为方法通道本身的访问应该是
async

,这正是我在“显示无限小数位的占位符”下的意思。请阅读我的编辑。如果我的解释无法理解,我很抱歉