大家好,我想使用angular dart提供程序向我的应用程序注入bloc依赖项。 我还将蜂巢用作本地数据存储。 所以我有几个bloc,它们使用使用蜂巢盒的服务。 我不能使用
/// useClass -> [ClassProvider]
/// useValue -> [ValueProvider]
/// useFactory -> [FactoryProvider]
/// useExisting -> [ExistingProvider]
因为它需要常量值。我也尝试过runAppAsync
这是我要注入的get_it区块
inal sl = GetIt.instance;
String googleApiKey = "";
String host = "192.168.0.101";
init() async {
sl.registerLazySingleton<Dio>(() {
final dio = Dio();
return dio;
});
// Hive.init();
Hive.registerAdapter(SearchAddressAdapter());
Hive.registerAdapter(ProductInCartAdapter());
Hive.registerAdapter(ShopLocationAdapter());
sl.registerSingletonAsync<Box>(() => Hive.openBox<SearchAddress>("address"));
sl.registerSingleton<LocalAddressRepository>(
HiveAddressRepositoryImpl(await sl.getAsync<Box>()));
sl.registerSingleton<ExternalAddressRepository>(
ExternalAddressRepositoryImpl(sl<Dio>()));
sl.registerSingleton<AddressService>(AddressService(
GetIt.I<ExternalAddressRepository>(),
GetIt.I<LocalAddressRepository>(),
googleApiKey));
sl.registerSingleton<LocationService>(LocationServiceWeb());
sl.registerSingleton<ShopRepository>(ShopRepositoryImpl(sl<Dio>()));
sl.registerSingleton<ShopService>(ShopService(GetIt.I<ShopRepository>()));
sl.registerSingleton<ProductRepository>(ProductRepositoryImpl(sl<Dio>()));
sl.registerSingleton<ProductService>(
ProductService(GetIt.I<ProductRepository>()));
sl.registerSingleton<OpeningHoursRepository>(
OpeningHoursRepositoryImpl(sl<Dio>()));
sl.registerSingleton<OpeningHoursService>(
OpeningHoursService(GetIt.I<OpeningHoursRepository>()));
}
然后我想注入这个Bloc。接下来的代码来自flutter
providers: [
BlocProvider<AddressPickerBloc>(
create: (BuildContext context) =>
AddressPickerBloc(GetIt.I<AddressService>())),
BlocProvider<AddressBloc>(
create: (BuildContext context) => AddressBloc(
GetIt.I<AddressService>(), GetIt.I<LocationService>())
..add(LoadAddressEvent())),
BlocProvider<ShopBloc>(
create: (BuildContext context) =>
ShopBloc(GetIt.I<ShopService>(), context.bloc<AddressBloc>()),
),
BlocProvider<ProductBloc>(
create: (BuildContext context) =>
ProductBloc(GetIt.I<ProductService>(), context.bloc<ShopBloc>()),
),
BlocProvider<OpeningHoursBloc>(
create: (BuildContext context) => OpeningHoursBloc(
GetIt.I<OpeningHoursService>(), context.bloc<ShopBloc>()),
)
],