Navigator 2.0 和抽屉
Posted
技术标签:
【中文标题】Navigator 2.0 和抽屉【英文标题】:Navigator 2.0 and Drawer 【发布时间】:2021-02-20 19:04:44 【问题描述】:我使用 Flutter 的 2.0 导航,如官方示例中所述:https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade。 我扩展了这个示例并在 BookDetailsScreen 中放置了一个抽屉。这个抽屉有一个 ListTile,它在 BookRouterDelegate 上调用 _handleHome:
void _handleHome()
_selectedBook = null;
notifyListeners();
网址更改正确,但小部件保持不变。如果我在 BookDetailsScreen 上放置一个调用相同回调的按钮,一切都会按预期工作。
谁能告诉我我做错了什么?
【问题讨论】:
【参考方案1】:如果你的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,
),
),
]
)
【讨论】:
以上是关于Navigator 2.0 和抽屉的主要内容,如果未能解决你的问题,请参考以下文章
Flutter Navigator.pop 再次运行小部件构建方法
如何判断是不是支持具有特定权限的 navigator.permissions.query
HarmonyOS鸿蒙学习笔记Navigator组件实现页面路由跳转
HarmonyOS鸿蒙学习笔记Navigator组件实现页面路由跳转