【问题标题】:connectivityResult returns null in flutter app's startup?在 Flutter 应用程序的启动中,connectivityResult 返回 null?
【发布时间】:2020-04-09 22:04:30
【问题描述】:

我正在使用连接:^0.4.6 插件来检查颤振应用程序中的连接。我的代码如下:

Future<void> main() async {

  StreamSubscription connectivitySubscription;

  ConnectivityResult _previousResult;

  connectivitySubscription = Connectivity()
    .onConnectivityChanged
    .listen((ConnectivityResult connectivityResult) {
      if (connectivityResult == ConnectivityResult.none) {
        nav.currentState.push(CupertinoPageRoute(
          builder: (BuildContext _) => NoConnectivityView()));
      } else if (_previousResult == ConnectivityResult.none) {
        nav.currentState.push(CupertinoPageRoute(
          builder: (BuildContext _) =>  LoginScreen()));
      }

      _previousResult = connectivityResult;
    });

  Future.delayed(Duration(seconds: 3));
  runApp(MyApp());
}

当应用启动后连接发生变化时,它工作得很好。但是,如果在初始状态下没有连接,它就不起作用。 connectivityResult 这次为空。

我该如何解决这个问题?

【问题讨论】:

  • 所以如果你要打印 connectivityResult 的值,也就是回调中的变量,它会是 null 吗?
  • 无法在启动时工作,如果互联网连接已关闭..\
  • 为什么不为 null 添加一个边界情况?
  • 如何添加?

标签: flutter dart connectivity flutter-plugin flutter-packages


【解决方案1】:

由于您正在监听设备的连接,此回调将触发多次,因此在某一时刻它可能为空,但在另一时刻它不会为空。

我已经为你添加了一个空案例:

Future<void> main() async {

  StreamSubscription connectivitySubscription;

  ConnectivityResult _previousResult;

  connectivitySubscription = Connectivity()
    .onConnectivityChanged
    .listen((ConnectivityResult connectivityResult) {
      if (connectivityResult == null || connectivityResult == ConnectivityResult.none) {
        nav.currentState.push(CupertinoPageRoute(
          builder: (BuildContext _) => NoConnectivityView()));
      } else if (_previousResult == ConnectivityResult.none) {
        nav.currentState.push(CupertinoPageRoute(
          builder: (BuildContext _) =>  LoginScreen()));
      }

      _previousResult = connectivityResult;
    });

  Future.delayed(Duration(seconds: 3));
  runApp(MyApp());
}

【讨论】:

  • 当应用程序启动并且连接关闭时它不会触发..但是在更改连接后它工作正常..我要做的是导航到启动本身的 NoConnectivityView() 如果连接不存在..
  • 也许是因为您在应用程序启动之前就已经这样做了......
  • 这段代码应该在应用程序初始化之后,也就是在MyApp被加载之后。
  • 在 MyApp 的 initstate 中添加了它。但在启动时它不起作用
  • main 函数中完全删除它,它不应该存在。
猜你喜欢
  • 2012-09-16
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
相关资源
最近更新 更多