Как правильно использовать свойство pages навигатора в flutter?

flutter #flutter-navigation

#трепетание #flutter-навигация

Вопрос:

Я следую этой статье Navigator 2.0 : https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade и я могу запустить его и пытаюсь понять различные его части, внося простые изменения.

У меня возникли проблемы с пониманием роли параметра «страницы», который передается при создании навигатора. Я понимаю, что страницы — это список страниц, которые представляют собой стек экранов, а самый верхний экран в этом стеке — это то, что отображается пользователю. Кроме того, когда пользователь нажимает кнопку «Назад», самый верхний экран удаляется (выскакивает), а тот, что под ним, становится активным. Является ли это правильным пониманием?

Чтобы проверить свое понимание, я изменил метод сборки BookRouterDelegate следующим образом (я просто добавил RandomScreen1 в список страниц в начале):

 @override
Widget build(BuildContext context) {
  return Navigator(
    key: navigatorKey,
    pages: [

//------------ ADDED THE FOLLOWING -----
      MaterialPage(
        key: ValueKey('RandomScreen1Page'),
        child: RandomScreen1(
        ),
      ),
//----- END ADDITION----------

      MaterialPage(
        key: ValueKey('BooksListPage'),
        child: BooksListScreen(
          books: books,
          onTapped: _handleBookTapped,
        ),
      ),
      if (show404)
        MaterialPage(key: ValueKey('UnknownPage'), child: UnknownScreen())
      else if (_selectedBook != null)
        BookDetailsPage(book: _selectedBook!)
    ],
    onPopPage: (route, result) {
      print("onpoproute ${route} ${result} ");
      if (!route.didPop(result)) {
        print("route did not pop");
        return false;
      }

      // Update the list of pages by setting _selectedBook to null
      _selectedBook = null;
      show404 = false;
      notifyListeners();

      return true;
    },
  );
}
 

Я ожидал, что когда пользователь находится на экране списка книг и нажимает кнопку «Назад», появится случайный экран. Но это не то, что происходит. Что происходит, так это то, что на долю секунды отображается случайный экран, а затем отображается экран списка книг.

Я не понимаю, почему. Предполагается ли, что в списке страниц должна быть ровно одна страница?