11import 'package:flutter/material.dart' ;
2+ import 'package:flutter/services.dart' ;
23import 'package:flutter_form_builder/flutter_form_builder.dart' ;
34import 'package:flutter_test/flutter_test.dart' ;
45
@@ -181,6 +182,21 @@ void main() {
181182
182183 expect (find.text (errorTextField), findsOneWidget);
183184 });
185+ testWidgets (
186+ 'Should not show error when init form and AutovalidateMode is disabled' ,
187+ (tester) async {
188+ const textFieldName = 'text4' ;
189+ const errorTextField = 'error text field' ;
190+ final testWidget = FormBuilderTextField (
191+ name: textFieldName,
192+ autovalidateMode: AutovalidateMode .disabled,
193+ validator: (value) => errorTextField,
194+ );
195+ await tester.pumpWidget (buildTestableFieldWidget (testWidget));
196+ await tester.pumpAndSettle ();
197+
198+ expect (find.text (errorTextField), findsNothing);
199+ });
184200 testWidgets (
185201 'Should show error when AutovalidateMode is onUserInteraction and change field' ,
186202 (tester) async {
@@ -199,6 +215,47 @@ void main() {
199215
200216 expect (find.text (errorTextField), findsOneWidget);
201217 });
218+ testWidgets (
219+ 'Should show error when init form and AutovalidateMode is onUnfocus' ,
220+ (tester) async {
221+ const textFieldName = 'text4' ;
222+ const errorTextField = 'error text field' ;
223+ final testWidget = FormBuilderTextField (
224+ name: textFieldName,
225+ autovalidateMode: AutovalidateMode .onUnfocus,
226+ validator: (value) => errorTextField,
227+ );
228+ final widgetFinder = find.byWidget (testWidget);
229+
230+ // Init form
231+ await tester.pumpWidget (buildTestableFieldWidget (
232+ Column (
233+ children: [
234+ testWidget,
235+ ElevatedButton (onPressed: () {}, child: const Text ('Submit' )),
236+ ],
237+ ),
238+ autovalidateMode: AutovalidateMode .onUnfocus,
239+ ));
240+ await tester.pumpAndSettle ();
241+ final focusNode =
242+ formKey.currentState? .fields[textFieldName]? .effectiveFocusNode;
243+ expect (find.text (errorTextField), findsNothing);
244+ expect (Focus .of (tester.element (widgetFinder)).hasFocus, false );
245+ expect (focusNode? .hasFocus, false );
246+
247+ // Focus input and write text
248+ await tester.enterText (widgetFinder, 'test' );
249+ await tester.pumpAndSettle ();
250+ expect (Focus .of (tester.element (widgetFinder)).hasFocus, true );
251+ expect (focusNode? .hasFocus, true );
252+ expect (find.text (errorTextField), findsNothing);
253+
254+ // Unfocus input and show error
255+ await tester.sendKeyEvent (LogicalKeyboardKey .tab);
256+ await tester.pumpAndSettle ();
257+ expect (find.text (errorTextField), findsOneWidget);
258+ });
202259 });
203260 group ('isDirty - ' , () {
204261 testWidgets ('Should not dirty by default' , (tester) async {
0 commit comments