如何使用颤振中的路线导航到主页面以外的页面?
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() 的一个实例。因此,从未设置过新路线。它解决了我的问题,但我仍然很好奇它有什么不同,因为它们都给出了相同的输出屏幕。
【讨论】:
以上是关于如何使用颤振中的路线导航到主页面以外的页面?的主要内容,如果未能解决你的问题,请参考以下文章