DBRouterDelegate constructor Null safety
- {required DBPage initialPage,
- required List<
DBPageBuilder> pageBuilders, - @visibleForTesting Map<
String, Completer< ? popResultTracker,Object?> > - String? restorationScopeId,
- bool reportPageUpdateToEngine = false}
Create a DBRouterDelegate with the provided pageBuilders
and initialPage
.
pageBuilders
the list DBPageBuilder that will be used to build route
requested by client of this DBRouterDelegate.
If none of the pageBuilders
in this list can't create the page
requested a PageNotFoundException will be thrown.
initialPage
that will be displayed by the DBRouterDelegate.
navigatorKey
Key for the Navigator's state, allowing to have the
same state on different build and that can be used to
access the navigator created by this delegate.
popResultTracker
A Map that track pop result of page pushed
into the stack.
Implementation
factory DBRouterDelegate({
required DBPage initialPage,
required List<DBPageBuilder> pageBuilders,
GlobalKey<NavigatorState>? navigatorKey,
List<NavigatorObserver>? navigatorObservers,
@visibleForTesting Map<String, Completer<Object?>>? popResultTracker,
String? restorationScopeId,
bool reportPageUpdateToEngine = false,
}) {
assert(pageBuilders.isNotEmpty, 'Page builder list is empty');
assert(
pageBuilders.any(
(DBPageBuilder builder) {
return builder.supportRoute(initialPage.destination);
},
),
'no page builder in [pageBuilders] list can build initialPage',
);
return DBRouterDelegate.private(
<DBPage>[initialPage],
List<DBPageBuilder>.of(pageBuilders),
navigatorKey ?? GlobalKey<NavigatorState>(),
popResultTracker ?? <String, Completer<Object?>>{},
DBNavigationObserver(),
navigatorObservers ?? <NavigatorObserver>[],
restorationScopeId,
reportPageUpdateToEngine: reportPageUpdateToEngine,
);
}