我connectivity在我的 flutter 中使用插件来检查连接状态,但PlatForm Exception(No active stream to cancel, null)即使我已经处理了空情况,偶尔也会遇到错误。我已订阅流initState并取消订阅dispose状态
我的代码看起来像这样。
StreamSubscription streamConnectionStatus;
------------
//remaining code
------------
@override
void initState() {
getConnectionStatus();
}
getConnectionStatus() async {
streamConnectionStatus = new Connectivity()
.onConnectivityChanged
.listen((ConnectivityResult result) {
// Got a new connectivity status!
if (result == ConnectivityResult.mobile ||
result == ConnectivityResult.wifi) {
setState(() {
boolHasConnection = true;
});
} else {
setState(() {
boolHasConnection = false;
});
}
});
@override
void dispose() {
try {
streamConnectionStatus?.cancel();
} catch (exception, stackTrace) {
print(exception.toString());
updateError(exception.toString(), stackTrace);
} finally {
super.dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
这实际上让我发疯了,但我猜我遗漏了一些东西,或者我必须更改代码。
非常感谢,马希
小智 3
我遇到了类似的问题。这对我有帮助。
我已经订阅了同一小部件树中不同小部件中的连接插件公开的流。我从子小部件中删除了订阅,并仅在父小部件中保留了订阅,并将连接状态从父小部件传递给了子小部件。
通过这样做,我的代码变得更加干净,并且流订阅仅在一个地方维护/处置。然后我就没有再遇到这个问题了。
| 归档时间: |
|
| 查看次数: |
6889 次 |
| 最近记录: |