您的窗口小部件很可能已从树中删除。因此,它不再具有
context。
问题是,您忘记了退订
Stream。因此,即使将其从树中删除后,您的小部件仍会尝试更新。
一种解决方案是在
dispose通话时退订:
class Foo extends StatefulWidget { @override _FooState createState() => _FooState();}class _FooState extends State<Foo> { StreamSubscription streamSubscription; @override void initState() { super.initState(); streamSubscription = Bloc.of(context).myStream.listen((value) { print(value); }); } @override void dispose() { streamSubscription.cancel(); super.dispose(); } @override Widget build(BuildContext context) { return Container(); }}


