buildPage method

List<Page> buildPage()

return List Page for render stack pages in Navigator 2.0 always return a new instance of List to build new render

Implementation

List<Page<dynamic>> buildPage() {
  l.log('buildPage', name: debugLabel);
  if (pages == null || pages!.isEmpty) {
    l.log('buildPage: init', name: debugLabel);
    pages = [];
    pages!.add(initialRoute.page(state: initialRoute.state(null)));
    return pages!;
  }

  // check key of pages
  if (!kReleaseMode) {
    final keys = pages!.map((e) => e.key?.toString()).toList();
    final distinct = keys.toSet();
    if (distinct.length != keys.length) {
      distinct.forEach(keys.remove);
      l.log('pages = $pages', name: debugLabel);
      assert(false, 'dublicate keys page: ${keys.join(',')}');
    }
  }

  l.log('return buildPage: pages = $pages', name: debugLabel);
  // always return new object
  return [...pages!];
}