Flutter:无需等待服务器响应即可处理掉Bloc

时间:2019-01-01 19:15:29

标签: server dart flutter call bloc

用户进入页面后,将立即执行对服务器的调用。如果快照中有数据,流将被发送到UI,并使用UI创建一个ListView;否则,如果快照中有错误,将接收流错误消息。

所以,我打的电话是

try {
      List answer = await call();
      createList.sink.add(answer);
    } on Exception catch (e) {
      createList.sink.addError(e);
    }

问题是:如果连接速度很慢,并且用户在调用完成之前退出了该页面,则控制器将被处置,并且应用程序将抱怨我在处置控制器后无法清除该错误。 那么,有没有一种方法可以在用户退出页面时“中止”对服务器的调用?

1 个答案:

答案 0 :(得分:1)

使用控制器的isClosed属性,您可以在添加事件之前检查控制器是否关闭,就像这样:

try {
  List answer = await call();
  if (!createList.isClosed) {
    createList.sink.add(answer);
  }
} on Exception catch(e) {
  if (!createList.isClosed) {
    createList.sink.addError(e);
  }
}