Navigator:找不到pushNamed的生成器/路由

问题描述 投票:0回答:1

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

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

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

  1. 对于“ /”路由,使用“ home”属性,如果非空,则使用它。
  2. 否则,将使用“ routes”表,如果该表具有该路由的条目。
  3. 否则,将调用onGenerateRoute。对于未由“ home”和“ routes”处理的任何有效路由,它应该返回非null值。
  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 flutter-layout
1个回答
0
投票
您忘记添加前导/

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

路由名称需要与生成器

精确匹配。

© www.soinside.com 2019 - 2024. All rights reserved.