【问题标题】:Navigator: cannot find a generator/route for pushNamed导航器:找不到 pushNamed 的生成器/路由
【发布时间】:2020-07-12 23:54:01
【问题描述】:

我正在尝试使用 json 对象中的字符串值更改屏幕,但我在控制台中收到以下错误并且它不会更改我的屏幕:

在 _WidgetsAppState 中找不到路由 RouteSettings(“alert”,null)的生成器。

按以下顺序搜索路线的生成器:

  1. 对于“/”路由,使用“home”属性(如果非空)。
  2. 否则,如果“路由”表有路由条目,则使用它。
  3. 否则,将调用 onGenerateRoute。对于任何未被“home”和“routes”处理的有效路由,它应该返回一个非空值。
  4. 最后,如果所有其他方法都失败,则调用 onUnknownRoute。

很遗憾,onUnknownRoute 没有设置。

当异常被抛出时,这是堆栈

这是我的主页,该方法一直有效,直到 Navigator.pushNamed(context, opt['ruta']);:

 List<Widget> _listItems(List<dynamic> data, BuildContext context) {

    final List<Widget> options = [];

    data.forEach((opt){
      final widgetTemp = ListTile(
        title: Text(opt['texto']),
        leading: getIcon(opt['icon']),
        trailing: Icon(Icons.keyboard_arrow_right, color: Colors.blue,),
        onTap: (){
          print("Hello");

          Navigator.pushNamed(context, opt['ruta']);

        },
      );

      options..add(widgetTemp)
             ..add(Divider());
    });
return options;
  }

这是我的 main.dart,我有路线:


void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Components App',
      debugShowCheckedModeBanner: false,
      initialRoute: '/',
      routes: <String, WidgetBuilder>{

          '/' : (BuildContext context) => HomePage(),
          '/alert' : (BuildContext context) => AlertPage(),
          '/avatar' : (BuildContext context) => AvatarPage(),
      },

      onGenerateRoute: (settings){
        print("Ruta llamada: ${settings.name }");
      },
    );
  }
}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您忘记添加前导/

    Navigator.pushNamed(context, '/${opt['ruta']}');
    

    路由名称需要与生成器完全匹配

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2019-02-23
      • 2021-03-20
      相关资源
      最近更新 更多