我试图在关闭后从屏幕上恢复数据,然后将其添加到我的BLoC中的流控制器中。但是,当我尝试使用_bloc.streamController.value检索该值时,它为null。流控制器是BehaviorSubject。
void _getDataFromSomeScreen(context) async {
final data = await Navigator.push(
context, MaterialPageRoute(builder: (context) => SomeScreen()))
.then((onValue) {});
_bloc.streamController.sink.add(data);
}
我尝试过的其他选项包括在then语句中调用sink.add,将我的bloc传递给函数。
如果我删除'async'和'await'并且只是硬编码一个值,它似乎工作。为什么异步导致我的数据无法保存到我的流控制器?
void _getDataFromSomeScreen(context) {
_bloc.streamController.sink.add('some data');
}
如何从屏幕返回数据并将其添加到流控制器?
你不应该将两种与Futures合作的方式结合起来。
Future<void> _getDataFromSomeScreen(context) async {
final data = await Navigator.push(
context, MaterialPageRoute(builder: (context) => SomeScreen()));
_bloc.streamController.sink.add(data);
}
void _getDataFromSomeScreen(context) {
Navigator.push(
context, MaterialPageRoute(builder: (context) => SomeScreen()))
.then((data) => _bloc.streamController.sink.add(data));
}