Flutter Bad状态:调用close后无法添加新事件

时间:2020-07-09 19:55:36

标签: flutter rxdart

我在关闭流时遇到此问题:状态错误:调用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")
...
}

0 个答案:

没有答案