Поставщик ConnectivityStatus возвращает ноль и не обновляет IOS во флаттере, но работает в Android - PullRequest
0 голосов
/ 22 сентября 2019

У меня здесь очень запутанная проблема.На главном экране приложения у меня есть виджет, который возвращает дочерний виджет, если интернет подключен.еще изображение в дочернем виджете, которое сообщает о потерянном соединении.

Консоль Печать переменной для логики:

flutter: Connectivity Status: null

обычно она работает на Android довольно хорошо.но на ios при запуске приложения он показывает, что образ потери соединения, даже если связь есть.

Поскольку виджет должен возвращать что-то, у меня есть следующий код, и в нем я попытался напечатать переменную connectivityStatus,проблема в том, что вместо того, чтобы возвращать меня в автономном режиме при запуске, если он не обнаружил подключение, он возвращает ноль.и это ноль - проблема.

Если я переключаю Wi-Fi или сотовый интернет и повторяю, изображение исчезает, и все работает нормально на ios.эти шаги не являются обязательными для Android.

@override
  Widget build(BuildContext context) {

    var connectivityStatus = Provider.of<ConnectivityStatus>(context);

    if (connectivityStatus == ConnectivityStatus.Cellular) {
      return widget.child;
    }

    if (connectivityStatus == ConnectivityStatus.WiFi) {
      return widget.child;
    }

//    if (connectivityStatus == null) {
//      print("current Connectivity Status in null condition before delay : $connectivityStatus");
//      Future.delayed(Duration(milliseconds: 50000), (){
//        print("current Connectivity Status in null condition after delay : $connectivityStatus");
//      });
//    }
    setState(() {
      print(x);
    });

    if(x) {
      return Stack(
        children: <Widget>[
          widget.child,
          Container(
            color: Colors.black.withOpacity(0.95),
          ),
          Image.asset('images/connectivity_lost_dark_pattern.png')
        ],
      );
    }

    return Stack(
      children: <Widget>[
        widget.child,
        Container(
          color: Colors.white.withOpacity(0.95),
        ),
        Image.asset('images/connectivity_lost_light_pattern.png')
      ],
    );
  }

В приведенном выше коде вы можете видеть, что это закомментированный раздел, чтобы узнать, можно ли получить значение ConnectivityStatus с использованием будущей задержки.Я попытался значение от 500 миллисекунд до 500000 миллисекунд, но бесполезно, поскольку он был нулевым, даже после этого.

Завершить журнал после перезагрузки после отключения Wi-Fi и снова, на котором удаляется изображение и приложение может использоваться:

Performing hot reload...
Syncing files to device iPhone 11 Pro Max...
flutter: Connectivity Status: null
flutter: false
flutter: false
flutter: 5.0
Reloaded 4 of 674 libraries in 443ms.
flutter: false
flutter: 5.0
flutter: r = ConnectivityStatus.Offline
flutter: Connectivity Status: ConnectivityStatus.Offline
flutter: false
flutter: r = ConnectivityStatus.WiFi
flutter: Connectivity Status: ConnectivityStatus.WiFi
flutter: 5.0
flutter: false
flutter: 5.0
flutter: 5.0

Нужно найти причину, по которой провайдер дает ноль.потому что это корень всего этого беспорядка.

...