出现这个问题可能是由于以下原因导致的:
1.在bloc/bloc.dart中使用了相同的状态,并在同一流程中使用了多个bloc。这会导致bloc之间的交错,因此应该避免这样做。
2.某些状态在BlocBuilder之间共享并在状态更新后不会被重建。这可以通过手动更改state的hashCode来解决。可以在类中添加以下内容:
class MyState extends Equatable { final int counter;
const MyState(this.counter);
@override List
//override hashcode @override int get hashCode => counter.hashCode; }
这将确保在状态更新后重新构建BlocBuilder。
3.在父组件中传递的状态不是BlocProvider包装器的子组件。在这种情况下,BlocBuilder不会接收到有关状态更新的信息。在BlocProvider包装器的下面指定子组件将解决此问题。
解决方法示例:
class MyHomePage extends StatelessWidget { const MyHomePage({Key key}) : super(key: key);
@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('My Counter')), body: BlocProvider( create: (context) => CounterBloc(), child: MyChild(), ), ); } }
class MyChild extends StatelessWidget { const MyChild({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return BlocBuilder