reset method Null safety
- String initialPath,
- List<
DBPageBuilder> newPageBuilders, - {Object? arguments,
- List<
Destination> ? initialPageHistory}
Update the list of page builder composing this delegate.
initialPath
to use for this delegate.
Implementation
Future<void> reset(
final String initialPath,
final List<DBPageBuilder> newPageBuilders, {
Object? arguments,
List<Destination>? initialPageHistory,
}) async {
assert(newPageBuilders.isNotEmpty, "List of page builders can't be empty");
_navigationObserver.reset();
_pageBuilders
..clear()
..addAll(newPageBuilders);
final Destination destination = Destination(
path: initialPath,
metadata: DestinationMetadata(
arguments: arguments,
history: initialPageHistory,
),
);
final DBPage? initialPage = await _pageBuilders.getPage(destination);
if (initialPage == null) {
throw PageNotFoundException(destination);
}
if (initialPageHistory != null && initialPageHistory.isNotEmpty) {
final List<DBPage> prevPages = await _pageBuilders.createPages(
initialPageHistory,
);
_pages
..clear()
..addAll(prevPages)
..add(initialPage);
} else {
_pages
..clear()
..add(initialPage);
}
for (final Completer<Object?> tracker in _popResultTracker.values) {
if (!tracker.isCompleted) {
tracker.complete();
}
}
notifyListeners();
}