Sow*_*ber 7 android connectivity dart flutter
我已经使用Connectivity 的自述文件设置了一项基本检查来检查互联网连接。
@override
  void initState() {
    super.initState();
    subscription = Connectivity()
        .onConnectivityChanged
        .listen((ConnectivityResult result) {
      // Got a new connectivity status!
      print("Check: $result");
    });
  }
  @override
  void dispose() {
    print("Disposing Connection ...");
    super.dispose();
    subscription.cancel();
  }
我没有对代码本身进行任何重大更改。onConnectivityChanged()但是,当我检查日志时,每次连接发生变化时,应用程序似乎都会调用该函数两次。
这是日志:
Restarted application in 1,611ms.
I/flutter (17481): Check: ConnectivityResult.none
I/flutter (17481): Check: ConnectivityResult.mobile
I/flutter (17481): Check: ConnectivityResult.mobile
I/flutter (17481): Check: ConnectivityResult.none
I/flutter (17481): Check: ConnectivityResult.none
I/flutter (17481): Check: ConnectivityResult.wifi
I/flutter (17481): Check: ConnectivityResult.wifi
第一个结果是ConnectivityResult.none并且只出现一次。因为应用程序仅在当前小部件加载时检查连接一次。然而,在第一个(正确的)结果之后,所有结果都会获得两次,即使它们应该只出现一次。
这导致我的应用程序出现一些复杂情况。每次看到连接更改时,我都会向用户显示一个对话框,其中包含以下选项:
您离线
您正在使用移动网络
但由于检查在连接更改时以某种方式运行两次,因此我看到了两个对话框。不仅如此,因为当我从上下文中弹出对话框时,应用程序会再次加载并检查initState()是否导致对话框再次显示。除非手机连接到 WiFi,否则它将继续进行,因为此时不会进行检查。