Skip to content

Commit 1bfef91

Browse files
Added should request focus to checkbox group (#965)
* Added should request focus to checkbox group * Added should request focus to other elements Added should request focus to range slider, segemented control, and slider
1 parent 24bf0be commit 1bfef91

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

packages/flutter_form_builder/lib/src/fields/form_builder_checkbox_group.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class FormBuilderCheckboxGroup<T> extends FormBuilderField<List<T>> {
2323
final Widget? separator;
2424
final ControlAffinity controlAffinity;
2525
final OptionsOrientation orientation;
26+
final bool shouldRequestFocus;
2627

2728
/// Creates a list of Checkboxes for selecting multiple options
2829
FormBuilderCheckboxGroup({
@@ -58,6 +59,7 @@ class FormBuilderCheckboxGroup<T> extends FormBuilderField<List<T>> {
5859
this.separator,
5960
this.controlAffinity = ControlAffinity.leading,
6061
this.orientation = OptionsOrientation.wrap,
62+
this.shouldRequestFocus = false,
6163
}) : super(
6264
key: key,
6365
initialValue: initialValue,
@@ -81,7 +83,9 @@ class FormBuilderCheckboxGroup<T> extends FormBuilderField<List<T>> {
8183
value: state.value,
8284
options: options,
8385
onChanged: (val) {
84-
state.requestFocus();
86+
if (shouldRequestFocus) {
87+
state.requestFocus();
88+
}
8589
field.didChange(val);
8690
},
8791
disabled: state.enabled

packages/flutter_form_builder/lib/src/fields/form_builder_range_slider.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ class FormBuilderRangeSlider extends FormBuilderField<RangeValues> {
103103
final TextStyle? textStyle;
104104
final TextStyle? maxTextStyle;
105105
final NumberFormat? numberFormat;
106+
final bool shouldRequestFocus;
106107

107108
/// Creates field to select a range of values on a Slider
108109
FormBuilderRangeSlider({
@@ -133,6 +134,7 @@ class FormBuilderRangeSlider extends FormBuilderField<RangeValues> {
133134
this.textStyle,
134135
this.maxTextStyle,
135136
this.numberFormat,
137+
this.shouldRequestFocus = false,
136138
}) : super(
137139
key: key,
138140
initialValue: initialValue,
@@ -170,7 +172,9 @@ class FormBuilderRangeSlider extends FormBuilderField<RangeValues> {
170172
semanticFormatterCallback: semanticFormatterCallback,
171173
onChanged: state.enabled
172174
? (values) {
173-
state.requestFocus();
175+
if (shouldRequestFocus) {
176+
state.requestFocus();
177+
}
174178
field.didChange(values);
175179
}
176180
: null,

packages/flutter_form_builder/lib/src/fields/form_builder_segmented_control.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ class FormBuilderSegmentedControl<T extends Object>
3737
/// The list of options the user can select.
3838
final List<FormBuilderFieldOption<T>> options;
3939

40+
final bool shouldRequestFocus;
41+
4042
/// Creates field for selection of a value from the `CupertinoSegmentedControl`
4143
FormBuilderSegmentedControl({
4244
Key? key,
@@ -58,6 +60,7 @@ class FormBuilderSegmentedControl<T extends Object>
5860
this.pressedColor,
5961
this.padding,
6062
this.unselectedColor,
63+
this.shouldRequestFocus = false,
6164
}) : super(
6265
key: key,
6366
initialValue: initialValue,
@@ -100,7 +103,9 @@ class FormBuilderSegmentedControl<T extends Object>
100103
padding: padding,
101104
unselectedColor: unselectedColor,
102105
onValueChanged: (value) {
103-
state.requestFocus();
106+
if (shouldRequestFocus) {
107+
state.requestFocus();
108+
}
104109
if (state.enabled) {
105110
field.didChange(value);
106111
} else {

packages/flutter_form_builder/lib/src/fields/form_builder_slider.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ class FormBuilderSlider extends FormBuilderField<double> {
127127
final TextStyle? minTextStyle;
128128
final TextStyle? textStyle;
129129
final TextStyle? maxTextStyle;
130+
final bool shouldRequestFocus;
130131

131132
/// Creates field for selection of a numerical value on a slider
132133
FormBuilderSlider({
@@ -159,6 +160,7 @@ class FormBuilderSlider extends FormBuilderField<double> {
159160
this.maxTextStyle,
160161
this.autofocus = false,
161162
this.mouseCursor,
163+
this.shouldRequestFocus = false,
162164
}) : super(
163165
key: key,
164166
initialValue: initialValue,
@@ -195,7 +197,9 @@ class FormBuilderSlider extends FormBuilderField<double> {
195197
semanticFormatterCallback: semanticFormatterCallback,
196198
onChanged: state.enabled
197199
? (value) {
198-
state.requestFocus();
200+
if (shouldRequestFocus) {
201+
state.requestFocus();
202+
}
199203
field.didChange(value);
200204
}
201205
: null,

0 commit comments

Comments
 (0)