handleNavigationAction method
Implementation
Future<void> handleNavigationAction(String? sourceUrl, String targetUrl,
KrakenNavigationType navigationType) async {
KrakenNavigationAction action =
KrakenNavigationAction(sourceUrl, targetUrl, navigationType);
KrakenNavigationDelegate _delegate = navigationDelegate!;
try {
KrakenNavigationActionPolicy policy =
await _delegate.dispatchDecisionHandler(action);
if (policy == KrakenNavigationActionPolicy.cancel) return;
switch (action.navigationType) {
case KrakenNavigationType.navigate:
await rootController.load(KrakenBundle.fromUrl(action.target));
break;
case KrakenNavigationType.reload:
await rootController.reload();
break;
default:
// Navigate and other type, do nothing.
}
} catch (e, stack) {
if (_delegate.errorHandler != null) {
_delegate.errorHandler!(e, stack);
} else {
print('Kraken navigation failed: $e\n$stack');
}
}
}