LCOV - code coverage report
Current view: top level - lib/validators - ipv4_validator.dart (source / functions) Hit Total Coverage
Test: Folly Fields Lines: 20 20 100.0 %
Date: 2023-05-11 23:59:26 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/services.dart';
       2             : import 'package:folly_fields/util/mask_text_input_formatter.dart';
       3             : import 'package:folly_fields/validators/abstract_validator.dart';
       4             : 
       5             : ///
       6             : ///
       7             : ///
       8             : class Ipv4Validator extends AbstractValidator<String>
       9             :     implements AbstractParser<String> {
      10             :   ///
      11             :   ///
      12             :   ///
      13           1 :   Ipv4Validator()
      14           1 :       : super(
      15           1 :           <TextInputFormatter>[
      16           1 :             MaskTextInputFormatter(
      17             :               mask: '###############',
      18           1 :               filter: <String, RegExp>{
      19           1 :                 '#': RegExp('[0-9.]'),
      20             :               },
      21             :             ),
      22             :           ],
      23             :         );
      24             : 
      25             :   ///
      26             :   ///
      27             :   ///
      28           1 :   @override
      29             :   String format(String value) => value;
      30             : 
      31             :   ///
      32             :   ///
      33             :   ///
      34           1 :   @override
      35             :   String strip(String value) => value;
      36             : 
      37             :   ///
      38             :   ///
      39             :   ///
      40           1 :   @override
      41             :   TextInputType get keyboard => TextInputType.number;
      42             : 
      43             :   ///
      44             :   ///
      45             :   ///
      46           1 :   @override
      47           1 :   bool isValid(String value) => valid(value) == null;
      48             : 
      49             :   ///
      50             :   ///
      51             :   ///
      52           1 :   @override
      53             :   String? parse(String? value) {
      54           1 :     if (value == null || value.isEmpty) {
      55             :       return null;
      56             :     }
      57             : 
      58           1 :     List<String> parts = value.split('.');
      59             : 
      60           2 :     if (parts.length != 4) {
      61             :       return null;
      62             :     }
      63             : 
      64           2 :     for (final String part in parts) {
      65           1 :       int? octet = int.tryParse(part);
      66           2 :       if (octet == null || octet < 0 || octet > 255) {
      67             :         return null;
      68             :       }
      69             :     }
      70             : 
      71             :     return value;
      72             :   }
      73             : 
      74             :   ///
      75             :   ///
      76             :   ///
      77           1 :   @override
      78             :   String? valid(String? value) =>
      79           1 :       parse(value) == null ? 'IPv4 inválido.' : null;
      80             : }

Generated by: LCOV version 1.14