buildPages method

  1. @override
List<BeamPage> buildPages(
  1. BuildContext context,
  2. BeamState state
)
override

Creates and returns the list of pages to be built by the Navigator when this BeamLocation is beamed to or internally inferred.

context can be useful while building the pages. It will also contain anything injected via builder.

Implementation

@override
List<BeamPage> buildPages(BuildContext context, BeamState state) {
  final filteredRoutes = chooseRoutes(state.routeInformation, routes.keys);
  final routeBuilders = Map.of(routes)
    ..removeWhere((key, value) => !filteredRoutes.containsKey(key));
  final sortedRoutes = routeBuilders.keys.toList()
    ..sort((a, b) => _compareKeys(a, b));
  final pages = sortedRoutes.map<BeamPage>((route) {
    final routeElement = routes[route]!(context, state, data);
    if (routeElement is BeamPage) {
      return routeElement;
    } else {
      return BeamPage(
        key: ValueKey(filteredRoutes[route]),
        child: routeElement,
      );
    }
  }).toList();
  return pages;
}