用户进入页面后,将立即执行对服务器的调用。如果快照中有数据,流将被发送到UI,并使用UI创建一个ListView;否则,如果快照中有错误,将接收流错误消息。
所以,我打的电话是
try {
List answer = await call();
createList.sink.add(answer);
} on Exception catch (e) {
createList.sink.addError(e);
}
问题是:如果连接速度很慢,并且用户在调用完成之前退出了该页面,则控制器将被处置,并且应用程序将抱怨我在处置控制器后无法清除该错误。 那么,有没有一种方法可以在用户退出页面时“中止”对服务器的调用?
答案 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);
}
}