如何在 Flutter Bloc 中使用可注射和冷冻包装?

how to use injectable and freezed package in flutter bloc?

提问人:Muhammad Bahruddin Saputra 提问时间:10/30/2023 最后编辑:Muhammad Bahruddin Saputra 更新时间:10/30/2023 访问量:27

问:

如何使用 Injectable 和 Frozen 包装更改以下代码?

final getIt = GetIt.instance;
    
    class ServiceModule {
      ServiceModule._();
    
      static void init() {
    
        getIt
          ..registerSingletonAsync<CrashlyticsService>(() async {
            return FirebaseCrashlyticsService();
          })
          ..registerFactory<LogService>(DebugLogService.new)
          ..registerSingleton<LocalStorageService>(
            SharedPreferencesService(
              logService: getIt(),
            ),
            signalsReady: true,
          )
          ..registerSingleton<AppService>(
            AppServiceImpl(
              localStorageService: getIt(),
            ),
          );
      }
    }

我以前这样做过,但我收到一个错误,指示 GetIt 尝试查找 CrashlyticsService、LogService、LocalStorageService 和 App Service,但它们未列出。

@module
    abstract class ServiceModule {
      @singleton
      CrashlyticsService get crashlyticsService => FirebaseCrashlyticsService();
    
      @factory
      LogService get logService => DebugLogService(
            logger: getIt(),
          );
    
      @singleton
      LocalStorageService get localStorageService => SharedPreferencesService(
            logService: getIt(),
          );
    
      @singleton
      AppService get appService => AppServiceImpl(
            localStorageService: getIt(),
          );
    }

这是我的di_setup.dart


import 'package:get_it/get_it.dart';
import 'package:injectable/injectable.dart';

import 'di_setup.config.dart';

final getIt = GetIt.instance;

@InjectableInit(
  initializerName: r'$initGetIt', // default
  preferRelativeImports: true, // default
  asExtension: false, // default
)
void configureDependencies({String env = Environment.dev}) => $initGetIt(getIt, environment: env);
Flutter flutter-bloc 注射剂 get-it

评论


答: 暂无答案