Flutter, небольшая проблема в Cubit BlocBuilder

Я пытаюсь показать свое состояние int в Cubit с помощью BlockBuilder, это мой код:

class CounterCubit extends Cubit<int> {

  CounterCubit() : super(0);
  void increment() => emit(state + 1);
  void decrement() => emit(state - 1);
}
class CounterContainer extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocProvider(create: (_) => CounterCubit(), child: CounterView());
  }
}
void main() {
  runApp(MaterialApp(
    theme: myTheme,
    home: CounterView(),
  ));
}
class CounterView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final textTheme = Theme.of(context).textTheme;
    return Scaffold(
      appBar: AppBar(
        title: const Text("Example"),
      ),
      body: Center( //I guess the problem is here
          child: BlocBuilder<CounterCubit, int>(builder: (context, state) {
          return Text("$state", style: textTheme.headline2);
      })),

      //Increment and decrement button
      floatingActionButton: Column(
        mainAxisAlignment: MainAxisAlignment.end,
        crossAxisAlignment: CrossAxisAlignment.end,
        children: [
          FloatingActionButton(
            child: const Icon(Icons.add),
            onPressed: () => context.read<CounterCubit>().increment(),
          ),
          const SizedBox(
            height: 8,
          ),
          FloatingActionButton(
            child: const Icon(Icons.remove),
            onPressed: () => context.read<CounterCubit>().decrement(),
          )
        ],
      ),
    );
  }
}

Ошибка консоли

Ошибка: не удалось найти правильный поставщик над этим BlocBuilder ‹CounterCubit, int› Widget

Я уже пробовал использовать Provider, но это не решило проблему.


person Marcos Gianetti    schedule 05.05.2021    source источник
comment
Этот пример мне подходит. Не могли бы вы включить версию flutter и пакетов, которые вы используете, пожалуйста: D   -  person Luis A. Chaglla    schedule 05.05.2021
comment
Привет, @ LuisA.Chaglla, я использую Flutter 2.0.5, Dart 2.12.3 и flutter_bloc: ^ 7.0.0. Я обновил свой пост своим основным кодом   -  person Marcos Gianetti    schedule 05.05.2021


Ответы (1)


Вы не используете CounterContainer, поэтому у вас нет CounterCubit. Должен быть:

void main() {
  runApp(MaterialApp(
    theme: myTheme,
    home: CounterContainer(),
  ));
}
person Luis A. Chaglla    schedule 05.05.2021
comment
О Действительно !! здесь тоже сработало, большое вам спасибо !! - person Marcos Gianetti; 06.05.2021