如何解决Flutter中的连续流连接
我已经成功检查了此“主菜单”页面上的连接,但是我需要在我的应用程序中的每个其他页面上连续检查该连接。还有另一种方法可以连续检查连接而不必到处重新编写代码吗?还有其他与我类似的问题,但是我对如何从connectivity插件包实现连续连接流感到迷茫。
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,);
}
}
解决方法
您可以使用AppStateProvider和应用程序级showDialog()
。请记住,此程序包中有一个onConnectivityChanged
属性。您无需检查每个页面上的连接。它自己做。您只需听一听即可。
更多information。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。