首页 > 解决方案 > Flutter - get_it 错误:参数无效(AppModel 类型的对象未在 GetIt 中注册

问题描述

我在版本 4 中使用 Flutter 和包 get_it。

在我的main.dart我有:

Future main() async {
  WidgetsFlutterBinding.ensureInitialized();
  _registerAppLevelObjects();
  _resetInProgressFlag();

  await DotEnv().load('.env');

  runApp(MyApp());
}

Future<void> _registerAppLevelObjects() async {
  di.registerSingleton(AppDatabase.getInstance());
  di.registerSingleton(DeviceInfoPlugin());
  di.registerSingleton(DeviceInfoRepository(di.get()));
  di.registerSingleton(Api(di.get()));
  di.registerSingleton(DossierRepository(di.get(), di.get()));
  di.registerSingleton(CenterRepository(di.get()));
  di.registerSingleton(SharedPreferences.getInstance());
}

Future<void> _resetInProgressFlag() async {
  final repo = di.get<DossierRepository>();
  repo.resetInProgressFlag();
}

我有这个错误:

在 GetIt 中没有注册类型 Api。

DossierRepository依赖Api。我认为通话顺序很好。

我错过了什么?

标签: flutter

解决方案


您应该在异步方法之前使用 await。

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await _registerAppLevelObjects();
  await _resetInProgressFlag();

  await DotEnv().load('.env');

  runApp(MyApp());
}

推荐阅读