LCOV - code coverage report
Current view: top level - form_widget - number_form_widget.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 24 24 100.0 %
Date: 2021-08-25 10:55:58 Functions: 0 0 -

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

Generated by: LCOV version 1.15