如何在不使 main() 异步的情况下将异步对象注册到 get_it 包?
Posted
技术标签:
【中文标题】如何在不使 main() 异步的情况下将异步对象注册到 get_it 包?【英文标题】:How can I register the async object to get_it package without making the main() async? 【发布时间】:2021-05-05 09:20:31 【问题描述】:我想在 get_it 包中注册 SharedPrefrences 对象,以便从应用程序的所有地方访问它,而不是使 main() 异步。
-
方法对吗?
我该怎么做?
我就是这样做的,但是它抛出了一个异常。代码:
appLocator.registerLazySingletonAsync<SharedPreferences>(() async
final sh = await SharedPreferences.getInstance();
return sh;
);
例外:
未处理的异常:'package:get_it/get_it_impl.dart':失败 断言:第 342 行 pos 14:'instanceFactory.isReady':你试图 访问尚未准备好的 SharedPreferences 实例
【问题讨论】:
您是否尝试过使用StreamProvider
?
我在我的项目中使用了flutter_bloc。但是我不知道如何使用 RepositoryProvider 来处理依赖注入。
无法帮助您解决flutter_bloc :(
【参考方案1】:
你有什么理由不想让你的主异步?使您的主要方法异步没有任何问题。它在您将看到的大多数项目中完成。
我是一名专业的 Flutter 开发人员并且使用 get_it,它的影响为零,所以我不明白你为什么不这样做。
【讨论】:
好的。它没有性能问题。但是,异常呢?我该如何解决?以上是关于如何在不使 main() 异步的情况下将异步对象注册到 get_it 包?的主要内容,如果未能解决你的问题,请参考以下文章
C# 中有没有办法在不使调用者也异步的情况下调用异步方法? [复制]
您可以在不使其无状态的情况下将 Spring Security 与 REST 服务一起使用吗?
如何在不返回 Promise 的情况下从对象的`get()` 获取异步数据
Flutter:如何在不阻塞 UI 的情况下异步地从资产中读取文件
如何在不重新加载页面的情况下将用户重定向到 redux saga 上的另一个页面
我们如何在不将 ViewController 对象推入其中的情况下将对象分配给 `UINavigationController`。