pushRoute<T> method
Implementation
Future<T?> pushRoute<T>(DipNavRoute route,
{bool removeUntil = false,
bool replaceCurrent = false,
bool rebuild = true,
bool fullscreenDialog = false,
bool maintainState = true}) async {
assert(!(removeUntil && replaceCurrent),
'Only removeUntil or replaceCurrent should by true!');
if (removeUntil) {
_stackPages.clear();
} else if (replaceCurrent && _stackPages.isNotEmpty) {
_stackPages.removeLast();
}
_addRoute(route,
fullscreenDialog: fullscreenDialog, maintainState: maintainState);
if (rebuild) {
notifyListeners();
dipNavObservers?.forEach((element) {
if (!replaceCurrent && !removeUntil) {
if (kDebugMode) print('didPush');
element.didPush(
_stackPages.last.route,
_stackPages.length >= 2
? _stackPages[_stackPages.length - 2].route
: null);
} else if (replaceCurrent) {
if (kDebugMode) print('didReplace');
element.didReplace(
newRoute: _stackPages.last.route,
oldRoute: _stackPages.length >= 2
? _stackPages[_stackPages.length - 2].route
: null);
} else {
if (kDebugMode) print('didReplace');
element.didRemove(
_stackPages.last.route,
_stackPages.length >= 2
? _stackPages[_stackPages.length - 2].route
: null);
}
});
}
return Future.value();
}