LCOV - code coverage report
Current view: top level - form_widget - text_form_widget.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 24 24 100.0 %
Date: 2021-10-19 14:11:01 Functions: 0 0 -

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

Generated by: LCOV version 1.15