LCOV - code coverage report
Current view: top level - src\better_router_base.dart - better_router_base.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 15 15 100.0 %
Date: Sun Jul 10 19:31:40 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           3 :   BetterRouter({required this.routes}) : assert(routes['-matchAll'] != null);
      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 = _routeInfo(path);
      19             : 
      20           3 :     final WidgetBuilder pageContentBuilder = routes[routeInfo.path]!;
      21             : 
      22           1 :     final Route<dynamic> route = pageRouteBuilder<dynamic>(
      23           2 :       settings.copyWith(arguments: routeInfo.data),
      24             :       pageContentBuilder,
      25             :     );
      26             : 
      27             :     return route;
      28             :   }
      29             : 
      30           1 :   Iterable<Matcher> get _mapper =>
      31           7 :       routes.keys.map((path) => Matcher(path, RegExp("^$path\$")));
      32             : 
      33             :   final _mapped = <String, RouteInfo>{};
      34             : 
      35           3 :   RouteInfo _routeInfo(path) => _mapped.putIfAbsent(
      36             :       path,
      37           6 :       () => _mapper.map((m) => m.matchWith(path)).lastWhere(
      38           1 :             (element) => element != null,
      39           3 :             orElse: () => RouteInfo(path: "-matchAll", data: {}),
      40             :           )!);
      41             : }

Generated by: LCOV version 1.15.alpha0w