Navigator 2.0和抽屉

时间:2020-11-08 18:47:07

标签: flutter

我使用官方示例https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade中所述的flutter的2.0导航。 我扩展了此示例,并在BookDetailsS​​creen中放置了一个抽屉。这个抽屉有一个ListTile,它在BookRouterDelegate上调用_handleHome:

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

URL正确更改,但是窗口小部件保持不变。如果我在BookDetailsS​​creen上放置一个Button来调用相同的回调,则一切都会按预期进行。

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

1 个答案:

答案 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,
        ),
      ),
  ]
)