【发布时间】:2019-02-07 15:43:09
【问题描述】:
我在无状态小部件中有这个 Streamsubscription
StreamSubscription < LocationResult > subscription =
Geolocation.locationUpdates(
accuracy: LocationAccuracy.best,
displacementFilter: 30.0, // in meters
inBackground: true,)
.listen((result) {
if (result.isSuccessful) {
saveResult(result);
} else {
}
});
我在计时器中调用它
startTimeout(mins) async {
await subscription.resume();
print("susbscription started");
return new Timer(Duration(minutes: mins), handleTimeout);
}
void handleTimeout() async{ // callback function
await subscription.cancel();
print("susbscription canceled");
}
在按钮点击时调用计时器:
startTimeout(1);
打印一分钟后取消订阅,但地理定位器不断被调用。
【问题讨论】:
-
我不确定您所说的“地理定位器不断被调用”是什么意思。它是否不断生成事件,并且您是否不断接收它们?如果是这样,我猜你取消了错误的订阅 - 你不应该在取消后收到事件。如果您可以看到服务器不断收到请求,那么
Geolocation的取消处理可能存在错误,但这是不可能通过测试而不被捕获的。那么,您能否准确解释一下您所看到的以及您希望看到的内容?