Я все еще очень новичок в Flutter и Blo c в целом, и я застрял в понимании этого.
Когда приложение запускается, я получаю печать в консоли, как и ожидалось:
флаттер: событие - AppStarted флаттер: транзакция - переход {currentState: неинициализировано, событие: AppStarted, nextState: Authenticated}
from:
runApp(
BlocProvider<AuthenticationBloc>(
create: (context) {
return AuthenticationBloc(
userRepository: UserRepository(),
)..add(AppStarted());
},
child:
, но когда MapScreen
загружает, я не получаю:
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
// BlocProvider<AlertBloc>(
// create: (context) {
// return AlertBloc(alertRepository: FirebaseAlertRepository())
// ..add(LoadAlerts());
// },
// ),
BlocProvider<MapBloc>(create: (context) {
return MapBloc(mapRepository: MapRepository())
..add(GetLocationStream())
..add(CenterMap());
}),
],
child: Scaffold
Вместо этого я получаю отпечатки, когда добавляю событие из onPressed
обратного вызова:
onPressed: () {
BlocProvider.of<MapBloc>(context)
.add(CenterMap());
},
flutter: Event является экземпляром флаттера «GetLocationStream»: событие является экземпляром флаттера «CenterMap»: событие является экземпляром «CenterMap»
Являются ли первые два события теми, которые я добавил через BlocProvider
?
Я понял проблему, потому что при загрузке экрана я не получаю распечатки для методов репозитория, которые я вызываю MapBloc
, но я делаю, как только я нажимаю на кнопку, так же как я получаю распечатки состояния:
флаттер: транзакция является переходом {currentState: MapCe ntered {location: null, locationStream: null}, событие: экземпляр CenterMap, nextState: MapCentered {location: null, locationStream: null}}
Работает ли добавление событий из BlocProvider
иначе когда в MultiBlocProvider
?
Большое спасибо. Приветствия.