Flutter - MultiBlocProvider не создает экземпляр 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

Я ожидал, что profileBloc будет создан, как homeBloc.

Это делает меня совершенно неспособным продолжать разработку. Понятия не имею, почему это так. Лучше всего то, что это сработало несколько раз, но мне не удалось воспроизвести такое поведение.

Любая помощь будет принята с благодарностью


person Bartek Pacia    schedule 29.12.2019    source источник


Ответы (1)


Оказалось, что «ProfilePageBloc» не был создан, потому что утверждение не удалось выполнить в его конструкторе. Кода, который я предоставил в вопросе, было недостаточно, чтобы решить эту проблему.

Подробнее здесь

person Bartek Pacia    schedule 30.12.2019