首页 > 解决方案 > 如何从 Navigator 中的字符串创建类(页面)

问题描述

我想根据“导航”键将用户重定向到所需的页面,我尝试过这样的方式:

final _bottomAppBarItem = [
{
  'iconData': Icons.airplay,
  'text': 'news',
  'navigation': NewsPage(),
},
{
  'iconData': Icons.person,
  'text': 'profile',
  'navigation': UserProfilePage(),
}];

Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => item['navigation']));

或者

final _bottomAppBarItem = [
{
  'iconData': Icons.airplay,
  'text': 'news',
  'navigation': 'NewsPage',
},
{
  'iconData': Icons.person,
  'text': 'profile',
  'navigation': 'UserProfilePage',
}];

Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => item['navigation']()));

但在这两种情况下,结果都是错误的,我怎么能忍受呢?

标签: flutterdart

解决方案


您可以使用此处描述的命名路由。您可以使用自定义字符串参数化您的路线。

命名路由的一个简单用例:

onPressed: () {
  // Navigate to the second screen using a named route.
  Navigator.pushNamed(context, '/second');
}

对于这种情况,另一种解决方案是开销,是使用mirrors


推荐阅读