我使用官方示例https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade中所述的flutter的2.0导航。 我扩展了此示例,并在BookDetailsScreen中放置了一个抽屉。这个抽屉有一个ListTile,它在BookRouterDelegate上调用_handleHome:
void _handleHome() {
_selectedBook = null;
notifyListeners();
}
URL正确更改,但是窗口小部件保持不变。如果我在BookDetailsScreen上放置一个Button来调用相同的回调,则一切都会按预期进行。
谁能告诉我我做错了什么?
答案 0 :(得分:0)
如果你的 RouterDelegate 上的 Navigator 没有变化,你需要明确定义一个条件来处理 null _selectedBook
Navigator(
key: navigatorKey,
pages: [
if (show404)
MaterialPage(key: ValueKey('UnknownPage'), child: UnknownScreen())
else if (_selectedBook != null)
BookDetailsPage(book: _selectedBook)
else // handle _selectedBook null
MaterialPage(
key: ValueKey('BooksListPage'),
child: BooksListScreen(
books: books,
onTapped: _handleBookTapped,
),
),
]
)