Flutter 颤振未更新立方体状态

Flutter 颤振未更新立方体状态,flutter,dart,bloc,cubit,Flutter,Dart,Bloc,Cubit,我正在练习阵营立体派,它并没有更新状态。这是我的主要文件。我使用BlocProvider创建实例,使用BlocBuilder渲染状态,但每当我单击递增和递减时,它不会重新渲染文本小部件 import 'package:bloc_counter_app/counter_cubit.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; void main() {

我正在练习阵营立体派,它并没有更新状态。这是我的主要文件。我使用BlocProvider创建实例,使用BlocBuilder渲染状态,但每当我单击递增和递减时,它不会重新渲染文本小部件

import 'package:bloc_counter_app/counter_cubit.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'bloc counter app',
      theme: ThemeData(primarySwatch: Colors.red),
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Bloc Counter App'),
      ),
      body: BlocProvider<CounterCubit>(
        create: (context) => CounterCubit(),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            BlocBuilder<CounterCubit, CounterState>(builder: (context, state) {
              return Text(
                state.counterValue.toString(),
                style: TextStyle(
                  fontSize: 20.0,
                ),
              );
            }),
            SizedBox(
              height: 50.0,
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                FloatingActionButton(
                    tooltip: 'Increment',
                    child: Icon(Icons.add),
                    onPressed: () {
                      BlocProvider.of<CounterCubit>(context).increment();
                    }),
                FloatingActionButton(
                    tooltip: 'decrement',
                    child: Icon(Icons.remove),
                    onPressed: () =>
                        BlocProvider.of<CounterCubit>(context).decrement())
              ],
            )
          ],
        ),
      ),
    );
  }
}

在按钮的回调中,您试图通过提供cubit的相同上下文获取它。创建一个单独的小部件或使用
Builder
包装子部件。更多信息。

谢谢,我通过使用BuildProvider包装MaterialApp()解决了这个问题,效果非常好
part 'counter_state.dart';

class CounterCubit extends Cubit<CounterState> {
  CounterCubit() : super(CounterState(counterValue: 0));

  void increment() => emit(CounterState(counterValue: state.counterValue + 1));

  void decrement() => emit(CounterState(counterValue: state.counterValue - 1));
}
part of 'counter_cubit.dart';



class CounterState {
  int counterValue;

  CounterState({@required this.counterValue});
}