我是个新手。我正在开发一个包含初始屏幕小部件的应用程序,然后将显示主屏幕。我只想检查是否有互联网连接,如果可以,它将进入主屏幕,否则将关闭。我已经以编程方式检查了互联网连接。可以,但没有任何互联网连接,它将转到主屏幕。请帮忙。预先感谢。
class Splashscreen extends StatefulWidget {
@override
State<StatefulWidget> createState() => _Splashscreenmain();
}
class _Splashscreenmain extends State<Splashscreen>{
Helperfunction helperfunction = new Helperfunction();
@override
void initState() {
super.initState();
startSplashScreen();
}
startSplashScreen() async {
var duration = const Duration(seconds: 10);
if (helperfunction.internetConnection() != "No Internet"){
return Timer(duration, () {
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (BuildContext context) {
return MyApp();
}));
});
}
else {
print(helperfunction.internetConnection());
SystemChannels.platform.invokeMethod('SystemNavigator.pop');
}
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
body: Container(
child: Image.asset('assets/images/splashscreen.png',fit: BoxFit.cover,
height: double.infinity,
width: double.infinity,
alignment: Alignment.center,),
),
);
}
}
我已打印出internetConnection()函数结果,但未执行'else'部分。
答案 0 :(得分:1)
如果没有互联网连接,您想关闭应用程序。
您可以使用SystemNavigator.pop().
来做到这一点不适用于ios,因为在iOS中,应用程序不应自行退出。我建议您向用户显示一个对话框,以启用Internet连接。
SystemChannels.platform.invokeMethod('SystemNavigator.pop');
来自docs。 指示系统导航器从堆栈中删除此活动并返回上一个活动。
在iOS上,对此方法的调用将被忽略,因为Apple的人机界面指南指出应用程序不应自行退出。
与调用dart:io的exit方法相比,此方法应更为可取,因为后者可能导致底层平台的运行就像应用程序崩溃一样。