Flutter - ошибка get_it: недопустимый аргумент (объект типа AppModel не зарегистрирован внутри GetIt - PullRequest
0 голосов
/ 27 мая 2020

Я использую Flutter и пакет get_it в версии 4.

В моем 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();
}

И вот такая ошибка:

Тип Api не зарегистрирован внутри GetIt.

Только DossierRepository полагается на Api. Я думаю, что порядок звонков хороший.

Что мне не хватает?

1 Ответ

0 голосов
/ 28 июня 2020

Вы должны использовать await перед асинхронными c методами.

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

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

  runApp(MyApp());
}
...