我正在尝试使用json对象内的字符串值更改屏幕,但在控制台中出现以下错误,并且它不会更改屏幕:
在_WidgetsAppState中找不到路由RouteSettings的生成器(“ alert”,null)。
按以下顺序搜索路由生成器:
- 对于“ /”路由,使用“ home”属性,如果非空,则使用它。
- 否则,将使用“ routes”表,如果该表具有该路由的条目。
- 否则,将调用onGenerateRoute。对于未由“ home”和“ routes”处理的任何有效路由,它应该返回非null值。
- 最后,如果所有其他方法都失败,则调用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 }");
},
);
}
}
/
:Navigator.pushNamed(context, '/${opt['ruta']}');
路由名称需要与生成器精确匹配。