屏幕加载时不会发送来自MultiBlocProvider中BlocProvider的事件。扑

时间:2020-02-27 22:13:22

标签: flutter bloc

总体而言,我对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添加事件是否起作用?

非常感谢。 干杯。

0 个答案:

没有答案