Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振:没有internet连接时返回页面_Flutter - Fatal编程技术网

Flutter 颤振:没有internet连接时返回页面

Flutter 颤振:没有internet连接时返回页面,flutter,Flutter,我创建了一个flatter应用程序,在没有互联网连接时显示一条taost消息,但我试图返回一个页面,澄清没有互联网连接(在进入应用程序之前)而不是toast消息,有没有办法做到这一点 class\u通知状态扩展状态{ var认购; var连接状态; @凌驾 void initState(){ subscription=Connectivity().onConnectivityChanged.listen((ConnectivityResult结果){ 设置状态(()=>connectionSt

我创建了一个flatter应用程序,在没有互联网连接时显示一条taost消息,但我试图返回一个页面,澄清没有互联网连接(在进入应用程序之前)而不是toast消息,有没有办法做到这一点

class\u通知状态扩展状态{
var认购;
var连接状态;
@凌驾
void initState(){
subscription=Connectivity().onConnectivityChanged.listen((ConnectivityResult结果){
设置状态(()=>connectionStatus=结果);
检查InternetConnectivity();
});
检查InternetConnectivity();
//checkLoginStatus();
super.initState();
}
checkInternetConnectivity(){
if(connectionStatus==ConnectivityResult.none){
返回
烤面包片(
msg:“检查您的互联网连接”,
烤面包片长度:烤面包片长度,
重力:ToastGravity.TOP,
时间:10,
背景颜色:Colors.red,
textColor:Colors.white,
字体大小:16.0
);
}
}
//PS:我尝试返回Internet()页,但它不起作用
@凌驾
处置{
super.dispose();
订阅。取消();
}

小部件生成(BuildContext上下文){
您的
initState
方法包含对
checkInternetConnectivity
的重复方法调用。请删除其中一个:

@override
  void initState() {
subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {         
        setState(() => connectionStatus = result);
        checkInternetConnectivity();
});
    
    // checkInternetConnectivity(); <--- Remove this
    // checkLoginStatus();
    
    super.initState();
  }

从一个页面导航到另一个页面的两种常见方式

  • 不使用路线
  • 使用命名路由。您需要指定要使用的路由

  • 从您的方法返回小部件将永远不会起作用。您需要推送一条路径,即您的
    Internet
    页面才能使其起作用。正如@RaviSinghLodhi所述,是的,您需要推送一条路径到您想要的页面,并且只返回您的Internet页面中的toast消息。我已尝试了您的答案并关闭了wifi,但应用程序仍然正常工作l并且没有将我导航到internet页:\t尝试调试它。您是否尝试调试程序卡住前的最后一个会话在哪里?是否执行了
    if(connectionStatus==ConnectivityResult.none)
    ?它会抛出“用于从导航器推送或弹出路由的上下文必须是导航器小部件的后代小部件的上下文。”@raya阅读此内容以解决错误删除了您的答案并关闭了wifi,但应用程序仍然正常工作,无法将我导航到internet页:\it throws”用于从导航器推送或弹出路由的上下文必须是导航器小部件的后代小部件的上下文。“好的,然后使用
    Navigator.of(context).push
    。我已经更新了答案。请检查。仍然相同:/n它会正常打开应用程序并关闭wifi,但如果返回toast而不是internet页面,则效果良好
    void checkInternetConnectivity() {
       if (connectionStatus == ConnectivityResult.none) {
         Navigator.of(context).push(MaterialPageRoute(
           buider: (BuildContext context) => Internet(),
         )); 
       }
    }
    
      Navigator.push(
            context,
            MaterialPageRoute(
            builder: (context) => InternetPage(
                // you can pass parameter here to the next page
                // remember to create instance of dataToNextPage at the page you are navigating to
                dataToNextPage: dataFromCurrentPage,
            ),
     ));
    
    Navigator.pushNamed(context, '/internetPage', arguments: {});