0

I am using connectivity: ^0.4.6 plugin for checking the connectivity in the flutter app. My code is as below:

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

It's working perfectly when the connection changes after the app starts. But if there is no connection in initial state its not working. connectivityResult is null this time.

How can I solve this?

Benjamin
  • 5,783
  • 4
  • 25
  • 49
afsal.an
  • 499
  • 2
  • 6
  • 13

1 Answers1

0

Since you're listening to the connectivity of the device, this callback will fire multiple times so at one moment it might be null but at another moment it won't be null.

I have added a null case for you:

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());
}
Benjamin
  • 5,783
  • 4
  • 25
  • 49