runInterceptor method

Future<InterceptorResult> runInterceptor(
  1. InterceptorContext context
)

Implementation

Future<InterceptorResult> runInterceptor(InterceptorContext context) async {
  _resetPriority();
  if (_list.isEmpty) {
    return InterceptorResult(status: RouterRunInterceptorResultStatus.pass);
  }

  for (var interceptor in _list) {
    var result = await interceptor.doDecision(context);
    switch (result.status) {
      case RouterRunInterceptorResultStatus.pass:
        continue;
      case RouterRunInterceptorResultStatus.switched:
        return InterceptorResult.switched(
          url: result.url,
          builder: result.builder,
          params: result.params,
        );
      case RouterRunInterceptorResultStatus.rejected:
        if (result.error == null) {
          assert(result.error != null);
          throw 'error should not be null';
        }
        return InterceptorResult.rejected(result.error!);
      default:
        assert(false);
    }
  }
  return InterceptorResult.pass();
}