如何使用颤振中的路线导航到主页面以外的页面?

Posted

技术标签:

【中文标题】如何使用颤振中的路线导航到主页面以外的页面?【英文标题】:How to use routes in flutter to navigate to page other than from main? 【发布时间】:2019-05-21 07:19:33 【问题描述】:

我创建了一条从一个页面导航到另一个页面的路由,方法如下

class task extends StatelessWidget
  @override
  Widget build(BuildContext context) 

    return MaterialApp(
        title: 'Task',
        home: new task(),
        routes: <String, WidgetBuilder>
          "/Completed": (BuildContext context) => new Completed()

        
    );
  



class taskScreen extends StatefulWidget

  @override
  taskState createState() => new taskState();



class taskState extends State<taskScreen> 

  @override
  Widget build(BuildContext context) 


    Column taskScreen = Column(
        children: <Widget>[
              FlatButton(
              ..,
              onPressed: ()
                Navigator.of(context).pushNamed("/Completed");  
               ,
              child: Text(
              "Completed",
              ),
              ),
            ],
          )
        ]);
    return Scaffold(
      appBar: AppBar(
          title: Text('Task Screen')),
      body: taskScreen,
    );
  


但是,当我尝试导航时,它会出现错误:

在 _WidgetsAppState 中找不到路由 RouteSettings("/Completed", null) 的生成器。

我该如何解决这个错误?

我之前使用了从我的 main.dart 页面到第二个页面的已实现路由,该页面可以正常工作,但在这里无法正常工作。

【问题讨论】:

你在哪里定义 Completed() 类,我想你在那里返回 null? @SamiKanafani 不,我不是。我正在返回一个 Scaffold 应用程序视图!我在一个单独的 dart 文件中定义它并导入到这个文件中。 能否请出示 Completed 类的代码? 【参考方案1】:

试试这个

Navigator.pushNamed(context, "/Completed");  

【讨论】:

【参考方案2】:

我发现了我的错误。我没有实例化 task(),而是创建了 taskScreen() 的一个实例。因此,从未设置过新路线。它解决了我的问题,但我仍然很好奇它有什么不同,因为它们都给出了相同的输出屏幕。

【讨论】:

以上是关于如何使用颤振中的路线导航到主页面以外的页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤振抽屉中返回主页/主页

如何从 Android 活动导航到特定的颤振路线?

如何安全地导航到我的颤振应用程序的默认路由(“主页”)?

如何使 getx 颤振以移动到下一个中​​间件

单击时如何使列表视图导航到另一个页面

如何删除默认导航路线动画