Flutter 如何在不使main()异步的情况下注册async对象以获取\u it包?

Flutter 如何在不使main()异步的情况下注册async对象以获取\u it包?,flutter,dependency-injection,service-locator,Flutter,Dependency Injection,Service Locator,我想在get_it包中注册SharedReferences对象,以便从应用程序的各个方面访问它,而不是使main()异步 这条路对吗 我怎么做 我就是这样做的,但它引发了一个异常。代码: appLocator.registerLazySingletonAsync<SharedPreferences>(() async { final sh = await SharedPreferences.getInstance(); return sh; }); appL

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

  • 这条路对吗
  • 我怎么做
  • 我就是这样做的,但它引发了一个异常。代码:

      appLocator.registerLazySingletonAsync<SharedPreferences>(() async {
        final sh = await SharedPreferences.getInstance();
        return sh;
      });
    
    appLocator.registerLazySingletonAsync(()async{
    final sh=wait SharedPreferences.getInstance();
    返回sh;
    });
    
    例外情况:

    未处理的异常:“包:get\u it/get\u it\u impl.dart”:失败 断言:第342行第14位:“instanceFactory.isReady”:您试图 访问尚未准备就绪的SharedReferences实例


    有没有一个原因,你不想让你的主要异步?使主方法异步没有什么错。你将看到的大多数项目都是这样做的


    我是一名专业的Flatter开发者,使用get_it,它没有任何影响,所以我不明白你为什么不使用。

    你是否尝试过使用
    StreamProvider
    ?我在我的项目中使用了Flatter_bloc。但是我不知道如何使用RepositoryProvider来处理依赖项注入。无法帮助您处理Flatter\u bloc:(好的。它没有性能问题。但是,异常情况如何?我如何修复它?