Widget build()

in nav2-usability/scenario_code/lib/skipping-stacks/router.dart [228:291]


  Widget build(BuildContext context) {
    final selectedBook = _appState.selectedBook;
    final selectedAuthor = _appState.selectedAuthor;
    return Navigator(
      key: navigatorKey,
      pages: [
        if (selectedAuthor != null) ...[
          MaterialPage(
            key: ValueKey('AuthorsListPage'),
            child: AuthorsListScreen(
              authors: _appState.authors,
              onTapped: _handleAuthorTapped,
              onGoToBooksTapped: _handleGoToBooksTapped,
            ),
          ),
          AuthorDetailPage(
            author: selectedAuthor,
          ),
        ] else if (selectedBook != null) ...[
          MaterialPage(
            key: ValueKey('BooksListPage'),
            child: BooksListScreen(
              books: _appState.books,
              onTapped: _handleBookTapped,
            ),
          ),
          BookDetailsPage(
            book: selectedBook,
            onAuthorTapped: _handleAuthorTapped,
          )
        ] else if (_appState.isViewingAuthorsPage)
          MaterialPage(
            key: ValueKey('AuthorsListPage'),
            child: AuthorsListScreen(
              authors: _appState.authors,
              onTapped: _handleAuthorTapped,
              onGoToBooksTapped: _handleGoToBooksTapped,
            ),
          )
        else
          MaterialPage(
            key: ValueKey('BooksListPage'),
            child: BooksListScreen(
              books: _appState.books,
              onTapped: _handleBookTapped,
            ),
          ),
      ],
      onPopPage: (route, result) {
        if (!route.didPop(result)) {
          return false;
        }

        if (_appState.selectedAuthor != null) {
          _appState.isViewingAuthorsPage = true;
        }

        _appState.clearSelectedBook();
        _appState.clearSelectedAuthor();

        return true;
      },
    );
  }