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。 我扩展了这个示例并在 BookDetailsS​​creen 中放置了一个抽屉。这个抽屉有一个 ListTile,它在 BookRouterDelegate 上调用 _handleHome:

void _handleHome() 
    _selectedBook = null;
    notifyListeners();

网址更改正确,但小部件保持不变。如果我在 BookDetailsS​​creen 上放置一个调用相同回调的按钮,一切都会按预期工作。

谁能告诉我我做错了什么?

【问题讨论】:

【参考方案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组件实现页面路由跳转

HarmonyOS鸿蒙学习笔记Navigator组件实现页面路由跳转

Flutter Navigator 2.0原理详解