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;
},
);
}
Я ожидал, что когда пользователь находится на экране списка книг и нажимает кнопку «Назад», появится случайный экран. Но это не то, что происходит. Что происходит, так это то, что на долю секунды отображается случайный экран, а затем отображается экран списка книг.
Я не понимаю, почему. Предполагается ли, что в списке страниц должна быть ровно одна страница?