LCOV - code coverage report
Current view: top level - lib/validators - local_phone_validator.dart (source / functions) Hit Total Coverage
Test: Folly Fields Lines: 14 14 100.0 %
Date: 2023-05-12 13:54:58 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 LocalPhoneValidator extends AbstractValidator<String> {
       9             :   ///
      10             :   ///
      11             :   ///
      12           1 :   LocalPhoneValidator()
      13           1 :       : super(
      14           1 :           <TextInputFormatter>[
      15           1 :             ChangeMask(
      16             :               firstMask: '####-####',
      17             :               secondMask: '#####-####',
      18             :             ),
      19             :           ],
      20             :         );
      21             : 
      22             :   ///
      23             :   ///
      24             :   ///
      25           1 :   @override
      26           2 :   String format(String value) => strip(value).replaceAllMapped(
      27           1 :         RegExp(r'^(\d{4,5})(\d{4})$'),
      28           4 :         (Match m) => '${m[1]}-${m[2]}',
      29             :       );
      30             : 
      31             :   ///
      32             :   ///
      33             :   ///
      34           1 :   @override
      35             :   TextInputType get keyboard => TextInputType.number;
      36             : 
      37             :   ///
      38             :   ///
      39             :   ///
      40           1 :   @override
      41             :   bool isValid(String value) {
      42           1 :     value = strip(value);
      43             : 
      44             :     /// phone must be defined
      45           1 :     if (value.isEmpty) {
      46             :       return false;
      47             :     }
      48             : 
      49             :     /// phone must have 10 or 11 chars
      50           4 :     if (value.length < 8 || value.length > 9) {
      51             :       return false;
      52             :     }
      53             : 
      54             :     /// Números de 9 dígitos sempre iniciam com 9.
      55           4 :     return !(value.length == 9 && value[0] != '9');
      56             :   }
      57             : }

Generated by: LCOV version 1.14