LCOV - code coverage report
Current view: top level - code_builder - import_builder.dart (source / functions) Coverage Total Hit
Test: lcov.info Lines: 95.2 % 21 20
Test Date: 2024-07-24 10:28:19 Functions: - 0 0

            Line data    Source code
       1              : import 'package:code_builder/code_builder.dart';
       2              : import 'package:flutter_navigation_generator/src/models/importable_type.dart';
       3              : import 'package:flutter_navigation_generator/src/models/route_config.dart';
       4              : import 'package:flutter_navigation_generator/src/utils/utils.dart';
       5              : 
       6              : class ImportBuilder {
       7              :   final Set<RouteConfig> routes;
       8              :   final Uri? targetFile;
       9              :   final ImportableType? pageType;
      10              :   final List<ImportableType> defaultGuards;
      11              : 
      12            1 :   ImportBuilder({
      13              :     required this.routes,
      14              :     this.targetFile,
      15              :     this.pageType,
      16              :     this.defaultGuards = const [],
      17              :   });
      18              : 
      19            1 :   Iterable<Directive> generate() {
      20              :     final imports = <String?>{
      21            1 :       'package:flutter/material.dart',
      22            1 :       'dart:convert',
      23            5 :       if (routes.any((route) => route.guards?.isNotEmpty == true) ||
      24            2 :           defaultGuards.isNotEmpty)
      25            0 :         'package:flutter_navigation_generator_annotations/flutter_navigation_generator_annotations.dart',
      26              :     };
      27            5 :     imports.add(typeRefer(pageType, targetFile: targetFile).url);
      28            1 :     imports.addAll(
      29            2 :         defaultGuards.map((e) => typeRefer(e, targetFile: targetFile).url));
      30            3 :     imports.addAll(routes.expand(
      31            2 :       (route) => [
      32            4 :         typeRefer(route.routeWidget, targetFile: targetFile).url,
      33            4 :         typeRefer(route.pageType, targetFile: targetFile).url,
      34            4 :         typeRefer(route.returnType, targetFile: targetFile).url,
      35            4 :         ...route.parameters.expand((e) => [
      36            3 :               typeRefer(e, targetFile: targetFile).url,
      37            1 :               ...e.typeArguments
      38            1 :                   .map((e) => typeRefer(e, targetFile: targetFile).url),
      39              :             ]),
      40            1 :         ...?route.guards?.map((e) => typeRefer(e, targetFile: targetFile).url),
      41              :       ],
      42              :     ));
      43            2 :     return imports.whereType<String>().map(Directive.import);
      44              :   }
      45              : }
        

Generated by: LCOV version 2.0-1