Фабрика Flutter get_it еще не готова [библиотека Flutter get_it с инициализацией базы данных Floor]

Я пытаюсь использовать библиотеку этажей с библиотекой get_it, чтобы упростить вызов

простая реализация этой библиотеки:

final sl = GetIt.instance;

Future<void> init() async {
  /// database
  sl.registerLazySingletonAsync<AppDatabase>(
      () => $FloorAppDatabase.databaseBuilder('app_database.db').build());

  /// http client
  sl.registerLazySingleton<ApiService>(
      () => NetworkModule().getHttpProvider().getService());

  /// call dao
  sl.registerLazySingletonAsync<UserDao>(
      () async => (await sl.getAsync<AppDatabase>()).userDao);

в функции main() я вызываю:

ждите sl.init();

но я получаю ошибку:

You tried to access an instance of UserDao that is not ready yet
'package:get_it/get_it_impl.dart':
package:get_it/get_it_impl.dart:1
Failed assertion: line 404 pos 9: 'instanceFactory.isReady'

Что не так в моем коде?? Спасибо

я сослался на этот ответ https://stackoverflow.com/questions/56497896/make-a-simple-single-instanse-class-as-database-helper

то же самое. Вы нашли что-нибудь?

LMaker 27.01.2023 04:25
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
1
265
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

используйте dependsOn, обратитесь к https://pub.dev/packages/get_it#automatic-using-dependson и соедините каждый модуль.

например:

getIt.registerSingletonAsync<AppDatabase>(() async => $FloorAppDatabase
      .databaseBuilder('app_database.db')
      .addCallback(callback)
      .build());

getIt.registerSingletonWithDependencies<UserDao>(
      () => getIt<AppDatabase>().userDao,
      dependsOn: [AppDatabase]);

Другие вопросы по теме