【问题标题】:Check Internet Connectivity after splash启动后检查 Internet 连接
【发布时间】:2020-02-05 22:38:42
【问题描述】:

我是一个新手。我正在开发一个包含启动屏幕小部件的应用程序,然后将出现主屏幕。我只是想检查是否有任何互联网连接,如果有,它将进入主屏幕,否则它将关闭。我已经以编程方式检查了互联网连接。没关系,但没有任何互联网连接,它会进入主屏幕。请帮助解决这个问题。提前致谢。

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' 部分没有被执行。

【问题讨论】:

    标签: flutter


    【解决方案1】:

    如果没有互联网连接,您想关闭应用程序。 您可以使用SystemNavigator.pop(). 执行此操作不适用于 ios,因为在 IOS 中应用程序不应自行退出。我建议您向用户显示一个对话框以启用互联网连接。

    SystemChannels.platform.invokeMethod('SystemNavigator.pop');
    

    来自docs。 指示系统导航器从堆栈中删除此活动并返回到上一个活动。

    在 iOS 上,忽略对该方法的调用,因为 Apple 的人机界面指南规定应用程序不应自行退出。

    这个方法应该优先于调用 dart:io 的 exit 方法,因为后者可能会导致底层平台像应用程序崩溃一样行事。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 2015-11-18
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多