Skip to content

Commit e1b1d7f

Browse files
Merge pull request #1235 from flutter-form-builder-ecosystem/improvement-1129
Avoid unnecessary rebuild on Form
2 parents 52fbc62 + 418d79f commit e1b1d7f

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

lib/src/form_builder.dart

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,29 @@ class FormBuilderState extends State<FormBuilder> {
312312
autovalidateMode: widget.autovalidateMode,
313313
onWillPop: widget.onWillPop,
314314
// `onChanged` is called during setInternalFieldValue else will be called early
315-
child: FocusTraversalGroup(
316-
policy: WidgetOrderTraversalPolicy(),
317-
child: widget.child,
315+
child: _FormBuilderScope(
316+
formState: this,
317+
child: FocusTraversalGroup(
318+
policy: WidgetOrderTraversalPolicy(),
319+
child: widget.child,
320+
),
318321
),
319322
);
320323
}
321324
}
325+
326+
class _FormBuilderScope extends InheritedWidget {
327+
const _FormBuilderScope({
328+
required super.child,
329+
required FormBuilderState formState,
330+
}) : _formState = formState;
331+
332+
final FormBuilderState _formState;
333+
334+
/// The [Form] associated with this widget.
335+
FormBuilder get form => _formState.widget;
336+
337+
@override
338+
bool updateShouldNotify(_FormBuilderScope oldWidget) =>
339+
oldWidget._formState != _formState;
340+
}

0 commit comments

Comments
 (0)