我正在 Flutter 上创建一个移动应用程序,并且我正在调用在 Node.js 上创建的 REST API,以便始终连接和查询我的 oracle DB。
到目前为止,我一直在使用 connectivity 0.3.2,以便在异步调用或登录操作之前检查网络连接。像下面的例子:
checkConnectivity(context) async{
String connectionStatus;
StreamSubscription<ConnectivityResult> _connectivitySubscription;
final Connectivity _connectivity = new Connectivity();
try {
connectionStatus = (await _connectivity.checkConnectivity()).toString();
_connectivity.onConnectivityChanged.listen((ConnectivityResult result) {
connectionStatus = result.toString();
// print(connectionStatus);
});
} on PlatformException catch (e) {
print(e.toString());
connectionStatus = 'Failed to get connectivity.';
}
if(connectionStatus == "ConnectivityResult.none"){
components.alertPopup(context, "No Internet Connection available" , "Please check your internet connection and try again");}
}
我想问是否有任何可能的方法可以在用户使用应用程序的每一刻持续检查互联网断开(即使他只是在读取数据,而无需在全部)。
例如为了通知用户他离线了一个 SnackBar。
最佳答案
您已经编写了代码来做您想做的事。您可以轻松地将其包装在页面 State
或 InheritedWidget
或其他一些管理类。
final Connectivity _connectivity;
final StreamSubscription<ConnectivityResult> _subscription;
ConstructorForWhateverClassThisIs() {
_connectivity = new Connectivity();
_subscription = _connectivity.onConnectivityChanged.listen(onConnectivityChange);
}
void onConnectivityChange(ConnectivityResult result) {
// TODO: Show snackbar, etc if no connectivity
}
void dispose() {
// Always remember to cancel your subscriptions when you're done.
subscription.cancel();
}
根据documentation ,onConnectivityChanged
将在每次更改时使用新结果进行更新,这意味着您只需监听更改而无需手动查询它。
文档摘录:
You can also listen for network state changes by subscribing to the stream exposed by connectivity plugin
关于dart - 不断检查 Flutter 应用程序上的互联网断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53538014/