总体而言,我对Flutter和Bloc还是很陌生,我仍然坚持了解这一点。
应用启动时,我可以按预期在控制台中打印:
颤动:事件是AppStarted颤动:事务是过渡{ currentState:未初始化,事件:AppStarted,nextState: 已验证}
来自:
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:事件是“ GetLocationStream” flutter的实例:Event是 “ CenterMap”颤动的实例:事件是“ CenterMap”的实例
前两个事件是我通过BlocProvider
添加的事件吗?
我意识到了这个问题,因为在屏幕加载时,我没有得到MapBloc
中调用的存储库方法的打印,但是我一点击按钮就得到了状态打印:>
flutter:交易正在过渡{currentState:MapCentered {location:空,locationStream:空},事件:的实例 'CenterMap',nextState:MapCentered {location:null,locationStream: null}}
在BlocProvider
中添加事件时,从MultiBlocProvider
添加事件是否起作用?
非常感谢。 干杯。