execute method

  1. @override
Future<void> execute(
  1. BuildContext context, {
  2. Map<String, dynamic>? arguments,
})
override

Executes this configuration.

The context parameter provides access to the widget tree. The optional arguments map contains parameters for the execution.

Implementation

@override
Future<void> execute(
  BuildContext context, {
  Map<String, dynamic>? arguments,
}) async {
  if (linkType == LinkType.route) {
    if (route == null || route!.ref.trim().isEmpty) {
      throw ArgumentError(
        'A route reference is required for route navigation.',
      );
    }
    await _performNavigation(context, routeId: route!.ref);
    return;
  }

  if (url == null || url!.trim().isEmpty) {
    throw ArgumentError('A URL is required for URL navigation.');
  }

  final uri = Uri.parse(url!);

  if (uri.scheme.startsWith('http')) {
    vyuh.router.push('/__system_navigate__', extra: uri);

    return;
  }

  final localRoute = vyuh.router.instance.configuration.findMatch(uri);
  var isLocal = localRoute.isNotEmpty;

  if (isLocal) {
    navigationType.apply(context, uri.toString());
    return;
  }

  await _performNavigation(context, uri: uri);
}