LCOV - code coverage report
Current view: top level - lib/validators - phone_validator.dart (source / functions) Hit Total Coverage
Test: Folly Fields Lines: 11 15 73.3 %
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 PhoneValidator extends AbstractValidator<String> {
       9             :   ///
      10             :   ///
      11             :   ///
      12           1 :   PhoneValidator()
      13           1 :       : super(
      14           1 :           <TextInputFormatter>[
      15           1 :             ChangeMask(
      16             :               firstMask: '(##) ####-####',
      17             :               secondMask: '(##) #####-####',
      18             :             ),
      19             :           ],
      20             :         );
      21             : 
      22             :   ///
      23             :   ///
      24             :   ///
      25           0 :   @override
      26           0 :   String format(String value) => strip(value).replaceAllMapped(
      27           0 :         RegExp(r'^(\d{2})(\d{4,5})(\d{4})$'),
      28           0 :         (Match m) => '(${m[1]}) ${m[2]}-${m[3]}',
      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 < 10 || value.length > 11) {
      51             :       return false;
      52             :     }
      53             : 
      54             :     /// Não existe DDD com zero.
      55           4 :     if (value[0] == '0' || value[1] == '0') {
      56             :       return false;
      57             :     }
      58             : 
      59             :     /// Telefones celulares sempre iniciam com 9.
      60           4 :     return !(value.length == 11 && value[2] != '9');
      61             :   }
      62             : }

Generated by: LCOV version 1.14