Непрерывное потоковое подключение во Flutter

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

class MainMenu extends StatefulWidget {

  MainMenu({this.latCoordinates, this.longCoordinates, this.postcode});

   final double latCoordinates;
   final double longCoordinates;
   final String postcode;

  @override
  _MainMenuState createState() => _MainMenuState();
}


class _MainMenuState extends State<MainMenu> with SingleTickerProviderStateMixin {

  bool isConnected = false;
  bool showSpinner = false;

  void connect() async {
    try {
      final result = await InternetAddress.lookup('example.com');
      if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
        setState(() {
          isConnected = true;
          showSpinner = false;
        });
      }
    } on SocketException catch (_) {
      setState(() {
        isConnected = false;
        Timer(Duration(seconds: 2), (){
          setState(() {
            showSpinner = false;
          });
        });
        // showSpinner = false;
      });
    }
  }


  @override
  void initState() {
    connect();
    super.initState();
  }


  @override
  Widget build(BuildContext context) {

    return isConnected ? Scaffold(

      backgroundColor: Colors.white,
    ) :

    ModalProgressHUD(
      inAsyncCall: showSpinner,
      child: Scaffold(
        backgroundColor: Colors.green,
    );
  }
}

person James 666    schedule 14.10.2020    source источник
comment
Вы можете проголосовать, если ответ вам помог :)   -  person Akif    schedule 16.10.2020


Ответы (1)


Вы можете использовать AppStateProvider и уровень приложения showDialog(). Имейте в виду, что в этом пакете есть свойство onConnectivityChanged. Вам не нужно проверять подключение на каждой странице. Он делает сам. Вы просто слушайте это.

Для получения дополнительной информации.

person Akif    schedule 14.10.2020