2

一旦用户进入页面,就会执行对服务器的调用。如果快照有数据,则会向 UI 发送一个流,使用该 UI 创建一个 ListView,否则,如果快照有错误,则会接收一个流错误消息。

所以,我的电话:

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

问题是:如果连接很慢,并且用户在调用完成之前退出该页面,控制器将被释放,并且应用程序会抱怨在我释放控制器后无法接收错误。那么,当用户退出页面时,有没有办法“中止”对服务器的调用?

4

1 回答 1

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);
  }
}
于 2019-01-02T22:39:05.580 回答