LCOV - code coverage report
Current view: top level - validators - time_validator.dart (source / functions) Hit Total Coverage
Test: Folly Fields Lines: 19 26 73.1 %
Date: 2023-04-01 18:13:35 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/material.dart';
       2             : import 'package:flutter/services.dart';
       3             : import 'package:folly_fields/util/folly_utils.dart';
       4             : import 'package:folly_fields/util/mask_text_input_formatter.dart';
       5             : import 'package:folly_fields/validators/abstract_validator.dart';
       6             : 
       7             : ///
       8             : ///
       9             : ///
      10             : class TimeValidator extends AbstractParserValidator<TimeOfDay> {
      11             :   ///
      12             :   ///
      13             :   ///
      14           1 :   TimeValidator()
      15           1 :       : super(
      16           1 :           <TextInputFormatter>[
      17           1 :             MaskTextInputFormatter(
      18             :               mask: 'AB:CB',
      19           1 :               filter: <String, RegExp>{
      20           1 :                 'A': RegExp('[0-2]'),
      21           1 :                 'B': RegExp('[0-9]'),
      22           1 :                 'C': RegExp('[0-5]'),
      23             :               },
      24             :             ),
      25             :           ],
      26             :         );
      27             : 
      28             :   ///
      29             :   ///
      30             :   ///
      31           0 :   @override
      32           0 :   String format(TimeOfDay value) => '${value.hour.toString().padLeft(2, '0')}'
      33           0 :       ':${value.minute.toString().padLeft(2, '0')}';
      34             : 
      35             :   ///
      36             :   ///
      37             :   ///
      38           0 :   @override
      39             :   String strip(String value) => value;
      40             : 
      41             :   ///
      42             :   ///
      43             :   ///
      44           1 :   @override
      45           1 :   bool isValid(String value) => valid(value) == null;
      46             : 
      47             :   ///
      48             :   ///
      49             :   ///
      50           0 :   @override
      51             :   TextInputType get keyboard => TextInputType.datetime;
      52             : 
      53             :   ///
      54             :   ///
      55             :   ///
      56           1 :   @override
      57             :   TimeOfDay? parse(String? value) {
      58           1 :     if (value != null && isValid(value)) {
      59           1 :       List<String> parts = value.split(':');
      60           2 :       if (parts.length == 2) {
      61           1 :         return TimeOfDay(
      62           2 :           hour: int.parse(parts.first),
      63           2 :           minute: int.parse(parts.last),
      64             :         );
      65             :       }
      66             :     }
      67             : 
      68             :     return null;
      69             :   }
      70             : 
      71             :   ///
      72             :   ///
      73             :   ///
      74           1 :   @override
      75           1 :   String? valid(String value) => FollyUtils.validTime(value);
      76             : 
      77             :   ///
      78             :   ///
      79             :   ///
      80           0 :   String formatDateTime(DateTime dateTime) =>
      81           0 :       format(TimeOfDay.fromDateTime(dateTime));
      82             : }

Generated by: LCOV version 1.14