LCOV - code coverage report
Current view: top level - form_widget - integer_form_widget.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 26 26 100.0 %
Date: 2021-09-29 11:41:13 Functions: 0 0 -

          Line data    Source code
       1             : part of apptive_grid_form_widgets;
       2             : 
       3             : /// FormComponent Widget to display a [IntegerFormComponent]
       4             : class IntegerFormWidget extends StatefulWidget {
       5             :   /// Creates a [TextFormField] to show and edit an integer contained in [component]
       6           3 :   const IntegerFormWidget({
       7             :     Key? key,
       8             :     required this.component,
       9           3 :   }) : super(key: key);
      10             : 
      11             :   /// Component this Widget should reflect
      12             :   final IntegerFormComponent component;
      13             : 
      14           2 :   @override
      15           2 :   _IntegerFormWidgetState createState() => _IntegerFormWidgetState();
      16             : }
      17             : 
      18             : class _IntegerFormWidgetState extends State<IntegerFormWidget> {
      19             :   final TextEditingController _controller = TextEditingController();
      20             : 
      21           2 :   @override
      22             :   void initState() {
      23           2 :     super.initState();
      24           8 :     if (widget.component.data.value != null) {
      25           7 :       _controller.text = widget.component.data.value!.toString();
      26             :     }
      27           5 :     _controller.addListener(() {
      28           3 :       if (_controller.text.isNotEmpty) {
      29           7 :         widget.component.data.value = int.parse(_controller.text);
      30             :       }
      31             :     });
      32             :   }
      33             : 
      34           2 :   @override
      35             :   void dispose() {
      36           4 :     _controller.dispose();
      37           2 :     super.dispose();
      38             :   }
      39             : 
      40           2 :   @override
      41             :   Widget build(
      42             :     BuildContext context,
      43             :   ) {
      44           2 :     return TextFormField(
      45           2 :       controller: _controller,
      46           1 :       validator: (input) {
      47           4 :         if (widget.component.required && (input == null || input.isEmpty)) {
      48             :           // TODO: Make this Message configurable
      49           4 :           return '${widget.component.property} is required';
      50             :         } else {
      51             :           return null;
      52             :         }
      53             :       },
      54             :       autovalidateMode: AutovalidateMode.onUserInteraction,
      55           8 :       expands: widget.component.options.multi,
      56           4 :       inputFormatters: [FilteringTextInputFormatter.digitsOnly],
      57             :       keyboardType: const TextInputType.numberWithOptions(signed: true),
      58           2 :       decoration: InputDecoration(
      59           8 :         helperText: widget.component.options.description,
      60             :         helperMaxLines: 100,
      61          14 :         labelText: widget.component.options.label ?? widget.component.property,
      62           8 :         hintText: widget.component.options.placeholder,
      63             :       ),
      64             :     );
      65             :   }
      66             : }

Generated by: LCOV version 1.15