LCOV - code coverage report
Current view: top level - lib\src\better_router_base.dart - better_router_base.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 14 15 93.3 %
Date: Sun Jul 10 19:19:48 2022 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/material.dart';
       2             : 
       3             : import 'route_info.dart';
       4             : import 'matcher.dart';
       5             : 
       6             : class BetterRouter {
       7             :   final Map<String, WidgetBuilder> routes;
       8             : 
       9           1 :   BetterRouter({required this.routes});
      10             : 
      11           1 :   pageRouteBuilder<T>(RouteSettings settings, WidgetBuilder builder) {
      12           1 :     return MaterialPageRoute<T>(settings: settings, builder: builder);
      13             :   }
      14             : 
      15           1 :   Route<dynamic>? call(RouteSettings settings) {
      16           1 :     final String path = settings.name!;
      17             : 
      18           1 :     RouteInfo routeInfo = _matcher(path);
      19             : 
      20             :     final WidgetBuilder pageContentBuilder =
      21           5 :         routes[path] ?? routes[routeInfo.path]!;
      22             : 
      23           1 :     final Route<dynamic> route = pageRouteBuilder<dynamic>(
      24           2 :       settings.copyWith(arguments: routeInfo.data),
      25             :       pageContentBuilder,
      26             :     );
      27             : 
      28             :     return route;
      29             :   }
      30             : 
      31           1 :   Iterable<Matcher> get _mapper =>
      32           7 :       routes.keys.map((path) => Matcher(path, RegExp("^$path\$")));
      33             : 
      34             :   final _mapped = <String, RouteInfo>{};
      35             : 
      36           3 :   RouteInfo _matcher(path) => _mapped.putIfAbsent(
      37             :       path,
      38           6 :       () => _mapper.map((m) => m.matchWith(path)).lastWhere(
      39           1 :             (element) => element != null,
      40           0 :             orElse: () => RouteInfo(path: "/404", data: {}),
      41             :           )!);
      42             : }

Generated by: LCOV version 1.15.alpha0w