提问人:Muhammad Bahruddin Saputra 提问时间:10/30/2023 最后编辑:Muhammad Bahruddin Saputra 更新时间:10/30/2023 访问量:27
如何在 Flutter Bloc 中使用可注射和冷冻包装?
how to use injectable and freezed package in flutter bloc?
问:
如何使用 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);
答: 暂无答案
评论