未处理的异常:在 _WidgetsAppState 中找不到路由 RouteSettings("/CatPage", null) 的生成器

Posted

技术标签:

【中文标题】未处理的异常:在 _WidgetsAppState 中找不到路由 RouteSettings("/CatPage", null) 的生成器【英文标题】:Unhandled Exception: Could not find a generator for route RouteSettings("/CatPage", null) in the _WidgetsAppState 【发布时间】:2021-09-24 18:11:39 【问题描述】:

我是 Flutter 的新手,不明白为什么它在路由时给我一个错误,我的登录页面

class _LoginPageState extends State<LoginPage> 

  final _key = GlobalKey<FormState>();

  String uid = "";
  bool onLog = false;

  toCat() async
    if(_key.currentState!.validate())

      setState(() 
        onLog = true;
      );

      await Future.delayed(Duration(milliseconds: 1000));
      Navigator.pushNamed(context, MyRoutes.catPage);

      setState(() 
        onLog = false;
      );
    
  
  @override
  Widget build(BuildContext context) 
    return SingleChildScrollView(
        child: Form(
          key: _key,
            child: Column(
              children: [
                SizedBox(height: 50,),
                Image.network('https://www.pngkit.com/png/full/6-60441_welcome-welcome-png.png', fit: BoxFit.cover,),
                SizedBox(height: 20,),
                Text('Hi, $uid', style: TextStyle(fontSize: 26, fontWeight: FontWeight.bold),),
                SizedBox(height: 20,),
                Padding(
                  padding: EdgeInsets.all(30),
                  child: Column(
                    children: [
                      TextFormField(
                        decoration: InputDecoration(hintText: 'Enter username', labelText: 'Username'),
                        onChanged: (value)
                          uid = value;
                          setState(() );
                        ,
                      ),
                      TextFormField(
                        obscureText: true,
                        decoration: InputDecoration(hintText:'Enter password', labelText: 'Password'),
                        validator: (value) 
                          if(value!.isEmpty)
                            return 'password must not be empty';
                          else if(value.length < 6)
                            return 'passowrd cannot be small';
                          elsereturn null;
                        ,
                      ),
                      SizedBox(height: 25,),
                      InkWell(
                        onTap: ()toCat();,
                        child: AnimatedContainer(
                          alignment: Alignment.center,
                          duration: Duration(milliseconds: 300),
                          height: 50,
                          width: onLog ? 50 : 150,
                          decoration: BoxDecoration(color: Colors.cyan, borderRadius: BorderRadius.circular(onLog ? 50 : 8),),
                          child: onLog ? Icon(Icons.done) : Text('Login', style: TextStyle(color: Colors.black, fontSize: 20,),textScaleFactor: 1.2,),
                        ),

Inkwell小部件中的onTap功能,我想去这个页面

class _CatPageState extends State<CatPage> 
  Future<ModelClass> getImage() async 
    final Uri uri = Uri.parse("https://aws.random.cat/meow");
    final response = await (http.get(uri));

    if(response.statusCode == 200)
      final jsonData = jsonDecode(response.body);

      return ModelClass.fromJson(jsonData);
    
    else
      throw Exception;
    
  

  @override
  Widget build(BuildContext context) 
    return Center(
      child: FutureBuilder<ModelClass>(future: getImage(),builder: (context, snapshot) 
        if (snapshot.hasData)
          final cat = snapshot.data;

          return Container(
            height: 400,
            width: 400,
            decoration: BoxDecoration(image: DecorationImage(image: NetworkImage(cat!.url), fit: BoxFit.cover,),),
          );
    else if(snapshot.hasError)
          return Text(snapshot.error.toString());
        
        return CircularProgressIndicator();
    

标题中的错误或此错误

找不到路由 RouteSettings 的生成器

或者这个

使用不包含导航器的上下文请求导航器操作。

我无法理解路由

【问题讨论】:

你是如何在MaterialApp 中定义路由的? 没关系,这行得通: Nav() Navigator.push(context, MaterialPageRoute(builder: (context) => LoginForm()));设置状态(); 【参考方案1】:

我设法解决了以下问题:

Nav()
 Navigator.push(context, MaterialPageRoute(builder: (context) => LoginForm())); setState();

【讨论】:

以上是关于未处理的异常:在 _WidgetsAppState 中找不到路由 RouteSettings("/CatPage", null) 的生成器的主要内容,如果未能解决你的问题,请参考以下文章

颤动的json未处理的异常:类型'_InternalLinkedHashMap

第25章 SEH结构化异常处理_未处理异常及向量化异常

PyQt5 中未处理的异常

Android_程序未处理异常的捕获与处理

当 python 脚本有未处理的异常时退出代码

`未处理的异常:无效的参数:'_$_Category'的实例`在将数据发送到firestore时形成一个冻结的生成类