Как использовать маршруты во флаттере для перехода на страницу, отличную от основной?

Я создал маршрут для перехода с одной страницы на другую следующим образом

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 ответа

Решение

Попробуй это

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

Я понял свою ошибку. Вместо создания экземпляра task() я создал экземпляр taskScreen(). Следовательно, новый маршрут никогда не был установлен. Это решило мою проблему, но мне все еще любопытно, какую разницу это имело, поскольку оба они дали один и тот же экран вывода.

Другие вопросы по тегам