Flutter 颤振中的连续流连通性

Flutter 颤振中的连续流连通性,flutter,dart,connectivity,flutter-plugin,Flutter,Dart,Connectivity,Flutter Plugin,我已经成功地检查了这个主菜单页面上的连接,但我需要在我的应用程序中每隔一个页面不断地检查这个连接。有没有另一种方法可以让我不必到处重新编写代码就可以持续检查连接?还有其他类似的问题,但我对如何从插件包实现连续连接流有点迷茫 class MainMenu extends StatefulWidget { MainMenu({this.latCoordinates, this.longCoordinates, this.postcode}); final double latCoord

我已经成功地检查了这个主菜单页面上的连接,但我需要在我的应用程序中每隔一个页面不断地检查这个连接。有没有另一种方法可以让我不必到处重新编写代码就可以持续检查连接?还有其他类似的问题,但我对如何从插件包实现连续连接流有点迷茫

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,
    );
  }
}
class主菜单扩展StatefulWidget{
主菜单({this.latCoordinates,this.longcordinates,this.postcode});
最终双坐标;
最终双坐标;
最后一串邮政编码;
@凌驾
_MainMenuState createState()=>U MainMenuState();
}
类_MainMenuState使用SingleTickerProviderStateMixin扩展状态{
bool isConnected=false;
bool showSpinner=false;
void connect()异步{
试一试{
最终结果=wait InternetAddress.lookup('example.com');
if(result.isNotEmpty&&result[0].rawAddress.isNotEmpty){
设置状态(){
断开连接=正确;
showSpinner=false;
});
}
}关于SocketException捕获(41;{
设置状态(){
断开连接=错误;
计时器(持续时间(秒数:2),(){
设置状态(){
showSpinner=false;
});
});
//showSpinner=false;
});
}
}
@凌驾
void initState(){
connect();
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回未连接?脚手架(
背景颜色:Colors.white,
) :
莫达尔普罗斯胡德(
inAsyncCall:showSpinner,
孩子:脚手架(
背景颜色:Colors.green,
);
}
}
您可以使用和应用程序级别的
showDialog()
。请记住,此软件包中有一个
onConnectivityChanged
属性。您不需要在每个页面上都检查连接。它会自己检查。您只需聆听它


更多信息。

如果答案对您有帮助,您可以向上投票:)