Плохое состояние Flutter: невозможно добавить новые события после вызова close - PullRequest
0 голосов
/ 09 июля 2020

У меня проблема с закрытием потоков: плохое состояние: невозможно добавить новые события после вызова close

При удалении я вызываю метод закрытия контроллера, но когда я go перехожу на новый экран моего приложения и go назад перед загрузкой данных генерируется эта ошибка, я видел, что метод слива контроллера может быть выполнен, но тогда метод закрытия не выполняется, то есть он ждет будущего, чтобы закончить sh .

Использование метода слива больше не показывает ошибку, но я не знаю, правильно ли закрывать поток.

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")
...
}
...