handlerForLink method

LinkHandler? handlerForLink(
  1. String url
)

Tries to find LinkHandler in routeLinkHandlers

Implementation

LinkHandler? handlerForLink(String url) {
  final uriPath = Uri.parse(
    url.endsWith('/') ? url.substring(0, url.length - 1) : url,
  );

  final selectedRule = findDeclarationObject(uriPath.pathSegments);

  if (selectedRule is! Map) {
    return selectedRule;
  }

  final decisionSubroutes = findPossibleRoutes(
    uriPath.queryParametersAll,
    uriPath.fragment,
    selectedRule,
  );

  if (decisionSubroutes.isEmpty) {
    return selectedRule[''];
  } else {
    final latestSelected = findBestMatch(selectedRule, decisionSubroutes);

    if (latestSelected is LinkHandler) {
      return latestSelected;
    }

    // this must never happen

    // coverage:ignore-start
    return selectedRule[''];
    // coverage:ignore-end
  }
}