为了监听所有状态变化,可以使用BlocListener或者直接订阅Bloc的状态流。
例子:
BlocListener(
listener: (context, state) {
// 监听MyBloc的所有状态变化
},
child: BlocBuilder(
builder: (context, state) {
// 构建UI
},
),
);
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State {
StreamSubscription _subscription;
@override
void initState() {
super.initState();
_subscription = myBloc.state.listen((state) {
// 监听MyBloc的所有状态变化
});
}
@override
Widget build(BuildContext context) {
return BlocBuilder(
builder: (context, state) {
// 构建UI
},
);
}
@override
void dispose() {
_subscription.cancel();
super.dispose();
}
}