
InheritedWidget行为与其他行为相同
Widget。他们的寿命很短:通常不超过一个
build电话。
如果您想存储更长的数据,那
InheritedWidget不是您想要的。您需要一个
State。
这也意味着,最终,您可以将
State的dispose用于您的bloc处置。
class BlocHolder extends StatefulWidget { final Widget child; BlocHolder({this.child}); @override _BlocHolderState createState() => _BlocHolderState();}class _BlocHolderState extends State<BlocHolder> { final _bloc = new MyBloc(); @override Widget build(BuildContext context) { return MyInherited(bloc: _bloc, child: widget.child,); } @override void dispose() { _bloc.dispose(); super.dispose(); }}class MyInherited extends InheritedWidget { final MyBloc bloc; MyInherited({this.bloc, Widget child}): super(child: child); @override bool updateShouldNotify(InheritedWidget oldWidget) { return oldWidget != this; }}class MyBloc { void dispose() { }}