在显示第一个屏幕之前,我需要加载一个小的设置文件。
我目前正在使用PathProvider插件,但是其中的所有功能都是异步的。
有什么办法可以同步找到应用程序文档目录,然后在其上使用dart:io同步功能?而不是显示一个无穷小数秒的占位符。
编辑:考虑到前两个答案,可能我的解释确实很糟糕。答案表明我仍然使用async
代码。问题是,我需要runApp()
之前的目录,并且我不希望我的void main()
是async
,因为这肯定会破坏任何启动动画。
据我所知,PathProvider API是async
,仅是因为它利用了MethodChannel
,即async
,但是PathProvider在其背后的功能却几乎是同步的。
我要问的是-在Android或IOS上是否有一种方法可以以同步代码的方式了解ApplicationDocumentsDirectory?也许根本不使用平台特定的代码?
答案 0 :(得分:0)
除了进行测试外,对于所有其他功能,您始终应该首选异步IO功能,因为在等待IO操作完成时,同步IO会阻止事件循环完成其他异步代码。您只需await
打通电话,就能有效实现同步行为。
请参阅RawSynchronousSocket的文档,该文档具有以下警告(适用于在dart:io
中标记为同步的所有IO调用):
下面的操作将阻止调用线程等待网络的响应。在等待这些操作完成时,线程无法处理其他事件。 RawSynchronousSocket不适合服务器等需要高性能或异步I / O的应用程序。
答案 1 :(得分:0)
您可以将FutureBuilder
用于相同的目的,而不必担心执行。
它将允许您在后台执行过程,并允许您显示初始屏幕UI,直到指定的过程完成并且数据可以使用为止。
注意:默认情况下,任何需要访问设备的本机方法通道的插件或代码都将为async
,因为对方法通道本身的访问应为async
。