Я пытаюсь вернуть данные с экрана после его закрытия, а затем добавить их в контроллер потока в моем BLoC. Однако, когда я пытаюсь получить значение, используя _bloc.streamController.value, это значение равно нулю. Контроллер потока представляет собой BehaviorSubject.
void _getDataFromSomeScreen(context) async {
final data = await Navigator.push(
context, MaterialPageRoute(builder: (context) => SomeScreen()))
.then((onValue) {});
_bloc.streamController.sink.add(data);
}
Другие варианты, которые я пробовал, включают вызов sink.add внутри оператора then, передавая мой блок в функцию.
Если я уберу 'async' и 'await' и просто жестко закодирую значение, оно, похоже, будет работать. Почему из-за асинхронности мои данные не сохраняются на контроллере потока?
void _getDataFromSomeScreen(context) {
_bloc.streamController.sink.add('some data');
}
Как я могу вернуть данные с экрана и добавить их в мой потоковый контроллер?