Flutter – MultiBlocProvider不实例化BLoC

时间:2019-12-29 02:31:10

标签: flutter dart flutter-bloc

所以我有这个代码

@override
Widget build(BuildContext context) {
  return MultiBlocProvider(
    providers: [
      BlocProvider<ProfilePageBloc>(
        create: (context) => ProfilePageBloc(userRepository: UserRepository.instance),
      ),
      BlocProvider<HomeBloc>(
        create: (context) => HomeBloc(),
      ),
    ],
    child: BlocBuilder<HomeBloc, HomeState>(
      builder: (context, state) {
        return Scaffold(
          body: BlocBuilder<HomeBloc, HomeState>(
            builder: (context, state) {

              if (state is StateThatDoesNotMatter) {
                final HomeBloc homeBloc = BlocProvider.of<HomeBloc>(context);
                final ProfilePageBloc profileBloc = BlocProvider.of<ProfilePageBloc>(context);
                print("homeBloc: ${homeBloc.toString()}");
                print("profileBloc: ${profileBloc.toString()}");


              return Center(
                child: Text("Doesn't really matter"),
              );
            },
          ),
        );
      },
    ),
  );
}

我得到的输出是

homeBloc: Instance of 'HomeBloc'
profileBloc: null

我希望profileBlochomeBloc那样被实例化。

这使我完全无法继续开发。我不知道为什么会这样。 最好的事情是,它几次了,但是我无法重现这种行为。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

事实证明,没有实例化“ ProfilePageBloc”,因为其构造函数中的断言失败。 我在问题中提供的代码不足以解决它。

More info here