Skip to content

Commit f15afa5

Browse files
feat: show errors when auto validate mode always is set
1 parent c0427fb commit f15afa5

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

lib/src/form_builder.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/widgets.dart';
22
import 'package:flutter_form_builder/flutter_form_builder.dart';
3+
import 'package:flutter_form_builder/src/extensions/autovalidatemode_extension.dart';
34

45
/// A container for form fields.
56
class FormBuilder extends StatefulWidget {
@@ -357,6 +358,18 @@ class FormBuilderState extends State<FormBuilder> {
357358
});
358359
}
359360

361+
@override
362+
void initState() {
363+
// Verify if need auto validate form
364+
if (enabled && (widget.autovalidateMode?.isAlways ?? false)) {
365+
WidgetsBinding.instance.addPostFrameCallback((_) {
366+
// No focus on invalid, like default behavior on Flutter base Form
367+
validate(focusOnInvalid: false);
368+
});
369+
}
370+
super.initState();
371+
}
372+
360373
@override
361374
Widget build(BuildContext context) {
362375
return Form(

lib/src/form_builder_field.dart

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'package:flutter/widgets.dart';
22
import 'package:flutter_form_builder/flutter_form_builder.dart';
3-
import 'package:flutter_form_builder/src/extensions/autovalidatemode_extension.dart';
43

54
enum OptionsOrientation { horizontal, vertical, wrap, auto }
65

@@ -98,16 +97,13 @@ class FormBuilderFieldState<F extends FormBuilderField<T>, T>
9897
bool get hasError => super.hasError || errorText != null;
9998

10099
@override
101-
bool get isValid => super.isValid && errorText == null;
100+
bool get isValid => super.isValid && _customErrorText == null;
102101

103102
bool get valueIsValid => super.isValid;
104103
bool get valueHasError => super.hasError;
105104

106105
bool get enabled => widget.enabled && (_formBuilderState?.enabled ?? true);
107106
bool get readOnly => !(_formBuilderState?.widget.skipDisabled ?? false);
108-
bool get _isAlwaysValidate =>
109-
widget.autovalidateMode.isAlways ||
110-
(_formBuilderState?.widget.autovalidateMode?.isAlways ?? false);
111107

112108
/// Will be true if the field is dirty
113109
///
@@ -140,11 +136,6 @@ class FormBuilderFieldState<F extends FormBuilderField<T>, T>
140136
focusAttachment = effectiveFocusNode.attach(context);
141137

142138
// Verify if need auto validate form
143-
if ((enabled || readOnly) && _isAlwaysValidate) {
144-
WidgetsBinding.instance.addPostFrameCallback((_) {
145-
validate();
146-
});
147-
}
148139
}
149140

150141
@override

0 commit comments

Comments
 (0)