用户进入页面后,将立即执行对服务器的调用。如果快照中有数据,则将流发送到UI,以创建一个ListView;否则,如果快照中有错误,将接收流错误消息。
因此,我的电话是:
try {
List answer = await call();
createList.sink.add(answer);
} on Exception catch (e) {
createList.sink.addError(e);
}
问题是:如果连接速度很慢,并且用户在通话完成前退出了该页面,则将处置 Controller ,并且在我处置 Controller 后,应用程序将抱怨无法清除该错误。
那么,有没有一种方法可以在用户退出页面时“中止”对服务器的调用?
最佳答案
使用 Controller 的isClosed
属性,您可以在添加事件之前检查 Controller 是否关闭,如下所示:
try {
List answer = await call();
if (!createList.isClosed) {
createList.sink.add(answer);
}
} on Exception catch(e) {
if (!createList.isClosed) {
createList.sink.addError(e);
}
}