我正在使用MVVM架构创建电子商务应用程序,其中我在ViewModel类中使用流控制器。当我改变手机屏幕的方向时,它会说
不良状态:流已被收听
我已经尝试添加。广播当我初始化流控制器
final StreamController _streamController = StreamController<ViewObject>.broadcast();
但输出仍然不是所需的,而是屏幕变成空白。
jgovgodb1#
若要修复此问题,您可以在释放ViewModel类时取消流订阅。可以通过重写ViewModel类中的dispose方法并调用流订阅的cancel方法来实现此目的。下面是一个例子
class MyViewModel extends ChangeNotifier { final StreamController _streamController = StreamController<ViewObject>.broadcast(); Stream<ViewObject> get myStream => _streamController.stream; MyViewModel() { // Add data to the stream controller _streamController.add(myData); } @override void dispose() { _streamController.close(); super.dispose(); } }
1条答案
按热度按时间jgovgodb1#
若要修复此问题,您可以在释放ViewModel类时取消流订阅。可以通过重写ViewModel类中的dispose方法并调用流订阅的cancel方法来实现此目的。下面是一个例子