如何在不使 main() 异步的情况下将异步对象注册到 get_it 包?

问题描述

我想在 get_it 包中注册 SharedPrefences 对象,以便从应用程序的各个地方访问它,而不是使 main() 异步。

  1. 这是正确的方式吗?
  2. 我该怎么做?

我就是这样做的,但它引发了异常。代码

  appLocator.registerLazySingletonAsync<SharedPreferences>(() async {
    final sh = await SharedPreferences.getInstance();
    return sh;
  });

异常:

未处理的异常:'package:get_it/get_it_impl.dart':失败 断言:第 342 行 pos 14:'instanceFactory.isReady':您试图 访问尚未准备好的 SharedPreferences 实例

解决方法

您有什么不想让主异步的原因吗?使您的主要方法异步并没有错。您将在大多数项目中看到它。

我是一名专业的 Flutter 开发人员并且使用 get_it 并且它的影响为零,所以我不明白你为什么不这样做。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...