LCOV - code coverage report
Current view: top level - lib/validators - date_time_validator.dart (source / functions) Hit Total Coverage
Test: Folly Fields Lines: 17 26 65.4 %
Date: 2023-05-18 02:05:34 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/services.dart';
       2             : import 'package:folly_fields/util/folly_utils.dart';
       3             : import 'package:folly_fields/util/mask_text_input_formatter.dart';
       4             : import 'package:folly_fields/validators/abstract_validator.dart';
       5             : import 'package:intl/intl.dart';
       6             : 
       7             : ///
       8             : ///
       9             : ///
      10             : class DateTimeValidator extends AbstractParserValidator<DateTime> {
      11             :   final String locale;
      12             :   final String dateFormat;
      13             : 
      14             :   ///
      15             :   ///
      16             :   ///
      17           2 :   DateTimeValidator({
      18             :     this.locale = 'pt_br',
      19             :     this.dateFormat = 'dd/MM/yyyy HH:mm',
      20             :     String mask = 'B#/D#/#### A#:C#',
      21           2 :   }) : super(
      22           2 :           <TextInputFormatter>[
      23           2 :             MaskTextInputFormatter(
      24             :               mask: mask,
      25           2 :               filter: <String, RegExp>{
      26           2 :                 'A': RegExp('[0-2]'),
      27           2 :                 'B': RegExp('[0-3]'),
      28           2 :                 'C': RegExp('[0-5]'),
      29           2 :                 'D': RegExp('[0-1]'),
      30           2 :                 '#': RegExp('[0-9]'),
      31             :               },
      32             :             ),
      33             :           ],
      34             :         );
      35             : 
      36             :   ///
      37             :   ///
      38             :   ///
      39           0 :   @override
      40           0 :   String format(DateTime value) => DateFormat(dateFormat, locale).format(value);
      41             : 
      42             :   ///
      43             :   ///
      44             :   ///
      45           1 :   @override
      46             :   String strip(String value) => value;
      47             : 
      48             :   ///
      49             :   ///
      50             :   ///
      51           1 :   @override
      52           1 :   bool isValid(String value) => valid(value) == null;
      53             : 
      54             :   ///
      55             :   ///
      56             :   ///
      57           2 :   @override
      58             :   TextInputType get keyboard => TextInputType.datetime;
      59             : 
      60             :   ///
      61             :   ///
      62             :   ///
      63           1 :   @override
      64             :   DateTime? parse(String? text) {
      65           1 :     if (text != null && isValid(text)) {
      66             :       try {
      67           4 :         return DateFormat(dateFormat, locale).parse(text);
      68           0 :       } on Exception catch (_) {
      69             :         // Do nothing
      70             :       }
      71             :     }
      72             : 
      73             :     return null;
      74             :   }
      75             : 
      76             :   ///
      77             :   ///
      78             :   ///
      79           0 :   @override
      80             :   String? valid(String value) {
      81           0 :     if (value.isEmpty) {
      82             :       return 'Data e Hora inválidas.';
      83             :     }
      84             : 
      85           0 :     List<String> parts = value.split(' ');
      86             : 
      87           0 :     if (parts.length != 2) {
      88             :       return 'Partes da Data e Hora inválidas.';
      89             :     }
      90             : 
      91           0 :     return FollyUtils.validDate(parts.first) ??
      92           0 :         FollyUtils.validTime(parts.last);
      93             :   }
      94             : }

Generated by: LCOV version 1.14