Как использовать маршруты во флаттере для перехода на страницу, отличную от основной?
Я создал маршрут для перехода с одной страницы на другую следующим образом
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,
);
}
}
Однако, когда я пытаюсь ориентироваться, выдает ошибку:
Не удалось найти генератор для маршрута RouteSettings("/Completed", null) в _WidgetsAppState.
Как я могу исправить эту ошибку?
Я использовал ранее реализованный маршрут от моей страницы main.dart до второй страницы, которая работала должным образом, однако здесь она не работает.
2 ответа
Решение
Я понял свою ошибку. Вместо создания экземпляра task() я создал экземпляр taskScreen(). Следовательно, новый маршрут никогда не был установлен. Это решило мою проблему, но мне все еще любопытно, какую разницу это имело, поскольку оба они дали один и тот же экран вывода.