dart - 不断检查 Flutter 应用程序上的互联网断开连接

标签 dart flutter connectivity

我正在 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。

最佳答案

您已经编写了代码来做您想做的事。您可以轻松地将其包装在页面 StateInheritedWidget 或其他一些管理类。

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();
}

根据documentationonConnectivityChanged 将在每次更改时使用新结果进行更新,这意味着您只需监听更改而无需手动查询它。

文档摘录:

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/

相关文章:

dart - 使用 Flutter/Dart 关闭 Dismissible

flutter - 错误:无法将参数类型int分配给参数类型字符串

amazon-web-services - 私有(private)子网中的 EC2 实例无法访问亚马逊存储库

flutter - 在 Flutter 中恢复互联网连接时获取数据

flutter - 如何动态更改 SliverAppBar 高度

android - 通过 usb 从 Android 设备向热敏打印机发送数据

android - Flutter - 如何将数据从网站解析为 ListView

dart - 我希望IconButton中的onPressed方法返回一个新的Container

Dart 上空函数的表现

javascript - 如何从 websocket 连接读取 header