onNavigation method
clients will call resolver.next(true --> default) to continue
navigation or resolver.next(false) to abort navigation
example
Implementation
@override
Future<void> onNavigation(
NavigationResolver resolver,
StackRouter router,
) async {
final isSatisfied = await guard.checkIfSatisfied;
if (isSatisfied) {
if (false == resolver.isResolved) resolver.next();
} else {
await resolver.redirectUntil(
redirectRoute(({required bool isSatisfied}) async {
if (isSatisfied) {
await guard.update(isSatisfied: true);
resolver.next();
} else {
resolver.next(false);
}
}),
onFailure: (failure) {
log('Guard failed with ${failure.runtimeType} error: $failure');
},
);
// router.navigatePath(guard.redirectPath);
}
}