我试图在关闭屏幕后从屏幕取回数据,然后将其添加到我的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');
}
如何从屏幕返回数据并将其添加到流控制器中?
答案 0 :(得分:0)
您不应将两种使用期货的方式结合起来。
您可以使用async / await方法。
kernel_motion_blur = np.zeros((size, size))
kernel_motion_blur[int(:, (size-1)/2)] = np.ones(size)
kernel_motion_blur = kernel_motion_blur / size
您可以使用“老式”方法。
Future<void> _getDataFromSomeScreen(context) async {
final data = await Navigator.push(
context, MaterialPageRoute(builder: (context) => SomeScreen()));
_bloc.streamController.sink.add(data);
}