push<T> method

Future<T?> push<T>(
  1. String path, {
  2. Map<String, dynamic>? extra,
})

Push a new route onto the navigator stack with animation

Returns a Future that completes to the result value passed to

See Navigator.push for more details

Implementation

Future<T?> push<T>(String path, {Map<String, dynamic>? extra}) async {
  try {
    final context = _currentContext;
    if (context == null) {
      if (_enableLogger) {
        debugPrint('NavService.push: No valid context found.');
      }
      return null;
    }

    final navExtra = NavExtra(extra ?? {});
    final route = _routes[path];

    if (route == null) {
      if (_enableLogger) {
        debugPrint('NavService.push: Route not found for path: $path');
      }
      return null;
    }

    final result = await Navigator.of(
      context,
    ).push<T>(_buildPageRoute<T>(path: path, extra: navExtra, route: route));

    return result;
    // ignore: avoid_catches_without_on_clauses
  } catch (e, st) {
    if (_enableLogger) {
      debugPrint('NavService.push.exception: $e\n$st');
    }
    return null;
  }
}