我在关闭流时遇到此问题:状态错误:调用close后无法添加新事件
在处理过程中,我调用了控制器的close方法,但是当我进入应用程序的新屏幕并在加载数据之前返回时,会生成错误,我已经看到可以执行控制器的排水方法。 close方法未执行,也就是说,它正在等待将来完成。
使用排水方法不再显示错误,但是我不知道关闭流是否正确。
import 'dart:async';
import 'package:rxdart/rxdart.dart';
class PersonBloc {
final BehaviorSubject<String> _nameController = BehaviorSubject<String>();
Function(String) get nameSink => _nameController.sink.add;
Stream<String> get nameStream => _nameController.stream;
final BehaviorSubject<String> _cityController = BehaviorSubject<String>();
Function(String) get nameSink => _cityController.sink.add;
Stream<String> get nameStream => _cityController.stream;
Future<void> dispose() async {
_nameController?.close();
_cityController?.close();
}
Future<void> dispose2() async {
await _nameController.drain();
_nameController?.close();
await _cityController?.drain();
_cityController?.close();
}
}
我不知道使用条件检查流是否关闭是否正确,从而避免此错误。
if(!_nameController.isClosed){
nameSink("Maria")
...
}