【问题标题】:How to create a class(page) from a string in Navigator如何从 Navigator 中的字符串创建类(页面)
【发布时间】:2019-12-25 19:27:54
【问题描述】:

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

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']()));

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

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

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

    命名路由的简单用例:

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

    另一种解决方案是使用mirrors

    【讨论】:

    • 您好,谢谢您的回答,我认为这确实是最好的选择。我的方式第一个选项结果是有效的,但是对于它的正常操作,您需要为每个页面添加“导入”
    • 你的意思是每页都要导入素材库吗?
    猜你喜欢
    • 1970-01-01
    • 2022-12-04
    • 2015-12-17
    • 1970-01-01
    • 2017-03-15
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多