@@ -62,12 +62,10 @@ class FormBuilderField<T> extends FormField<T> {
62
62
});
63
63
64
64
@override
65
- FormBuilderFieldState <FormBuilderField <T >, T > createState () =>
66
- FormBuilderFieldState <FormBuilderField <T >, T >();
65
+ FormBuilderFieldState <FormBuilderField <T >, T > createState () => FormBuilderFieldState <FormBuilderField <T >, T >();
67
66
}
68
67
69
- class FormBuilderFieldState <F extends FormBuilderField <T >, T >
70
- extends FormFieldState <T > {
68
+ class FormBuilderFieldState <F extends FormBuilderField <T >, T > extends FormFieldState <T > {
71
69
String ? _customErrorText;
72
70
FormBuilderState ? _formBuilderState;
73
71
bool _touched = false ;
@@ -83,21 +81,25 @@ class FormBuilderFieldState<F extends FormBuilderField<T>, T>
83
81
/// Returns the initial value, which may be declared at the field, or by the
84
82
/// parent [FormBuilder.initialValue] . When declared at both levels, the field
85
83
/// initialValue prevails.
86
- T ? get initialValue =>
87
- widget.initialValue ??
88
- (_formBuilderState? .initialValue ??
89
- const < String , dynamic > {})[widget.name] as T ? ;
84
+ T ? get initialValue => widget.initialValue ?? (_formBuilderState? .initialValue ?? const < String , dynamic > {})[widget.name] as T ? ;
90
85
91
86
dynamic get transformedValue => widget.valueTransformer? .call (value) ?? value;
92
87
93
88
@override
94
89
String ? get errorText => super .errorText ?? _customErrorText;
95
90
91
+ @override
92
+ bool get hasError => super .hasError || errorText != null ;
93
+
94
+ @override
95
+ bool get isValid => super .isValid && errorText == null ;
96
+
97
+ bool get isValueValid => super .isValid;
98
+ bool get valueHasError => super .hasError;
99
+
96
100
bool get enabled => widget.enabled && (_formBuilderState? .enabled ?? true );
97
101
bool get readOnly => ! (_formBuilderState? .widget.skipDisabled ?? false );
98
- bool get _isAlwaysValidate =>
99
- widget.autovalidateMode.isAlways ||
100
- (_formBuilderState? .widget.autovalidateMode? .isAlways ?? false );
102
+ bool get _isAlwaysValidate => widget.autovalidateMode.isAlways || (_formBuilderState? .widget.autovalidateMode? .isAlways ?? false );
101
103
102
104
/// Will be true if the field is dirty
103
105
///
@@ -233,14 +235,9 @@ class FormBuilderFieldState<F extends FormBuilderField<T>, T>
233
235
}
234
236
final isValid = super .validate () && ! hasError;
235
237
236
- final fields = _formBuilderState? .fields ??
237
- < String , FormBuilderFieldState <FormBuilderField <dynamic >, dynamic >> {};
238
+ final fields = _formBuilderState? .fields ?? < String , FormBuilderFieldState <FormBuilderField <dynamic >, dynamic >> {};
238
239
239
- if (! isValid &&
240
- focusOnInvalid &&
241
- (formState? .focusOnInvalid ?? true ) &&
242
- enabled &&
243
- ! fields.values.any ((e) => e.effectiveFocusNode.hasFocus)) {
240
+ if (! isValid && focusOnInvalid && (formState? .focusOnInvalid ?? true ) && enabled && ! fields.values.any ((e) => e.effectiveFocusNode.hasFocus)) {
244
241
focus ();
245
242
if (autoScrollWhenFocusOnInvalid) ensureScrollableVisibility ();
246
243
}
0 commit comments