Skip to content

Commit cff43b1

Browse files
committed
feat: use FormBuilderChipOption for FormBuilderChoiceChip options
1 parent 201cd49 commit cff43b1

File tree

3 files changed

+70
-5
lines changed

3 files changed

+70
-5
lines changed

packages/flutter_form_builder/example/lib/main.dart

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,70 @@ class _CompleteFormState extends State<CompleteForm> {
295295
FormBuilderValidators.maxLength(3),
296296
]),
297297
),
298+
FormBuilderFilterChip<String>(
299+
autovalidateMode: AutovalidateMode.onUserInteraction,
300+
decoration: const InputDecoration(
301+
labelText: 'The language of my people'),
302+
name: 'languages_filter',
303+
// initialValue: const ['Dart'],
304+
options: const [
305+
FormBuilderChipOption(
306+
value: 'Dart',
307+
avatar: CircleAvatar(child: Text('D')),
308+
),
309+
FormBuilderChipOption(
310+
value: 'Kotlin',
311+
avatar: CircleAvatar(child: Text('K')),
312+
),
313+
FormBuilderChipOption(
314+
value: 'Java',
315+
avatar: CircleAvatar(child: Text('J')),
316+
),
317+
FormBuilderChipOption(
318+
value: 'Swift',
319+
avatar: CircleAvatar(child: Text('S')),
320+
),
321+
FormBuilderChipOption(
322+
value: 'Objective-C',
323+
avatar: CircleAvatar(child: Text('O')),
324+
),
325+
],
326+
onChanged: _onChanged,
327+
validator: FormBuilderValidators.compose([
328+
FormBuilderValidators.minLength(1),
329+
FormBuilderValidators.maxLength(3),
330+
]),
331+
),
332+
FormBuilderChoiceChip<String>(
333+
autovalidateMode: AutovalidateMode.onUserInteraction,
334+
decoration: const InputDecoration(
335+
labelText: 'Ok, if I had to choose one language, it would be:'),
336+
name: 'languages_choice',
337+
initialValue: 'Dart',
338+
options: const [
339+
FormBuilderChipOption(
340+
value: 'Dart',
341+
avatar: CircleAvatar(child: Text('D')),
342+
),
343+
FormBuilderChipOption(
344+
value: 'Kotlin',
345+
avatar: CircleAvatar(child: Text('K')),
346+
),
347+
FormBuilderChipOption(
348+
value: 'Java',
349+
avatar: CircleAvatar(child: Text('J')),
350+
),
351+
FormBuilderChipOption(
352+
value: 'Swift',
353+
avatar: CircleAvatar(child: Text('S')),
354+
),
355+
FormBuilderChipOption(
356+
value: 'Objective-C',
357+
avatar: CircleAvatar(child: Text('O')),
358+
),
359+
],
360+
onChanged: _onChanged,
361+
),
298362
],
299363
),
300364
),

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class FormBuilderChoiceChip<T> extends FormBuilderField<T> {
77
final bool shouldRequestFocus;
88

99
/// The list of items the user can select.
10-
final List<FormBuilderFieldOption<T>> options;
10+
final List<FormBuilderChipOption<T>> options;
1111

1212
// FilterChip Settings
1313
/// Elevation to be applied on the chip relative to its parent.
@@ -306,7 +306,7 @@ class FormBuilderChoiceChip<T> extends FormBuilderField<T> {
306306
textDirection: textDirection,
307307
verticalDirection: verticalDirection,
308308
children: <Widget>[
309-
for (FormBuilderFieldOption<T> option in options)
309+
for (FormBuilderChipOption<T> option in options)
310310
ChoiceChip(
311311
label: option,
312312
selected: field.value == option.value,
@@ -319,6 +319,7 @@ class FormBuilderChoiceChip<T> extends FormBuilderField<T> {
319319
state.didChange(choice);
320320
}
321321
: null,
322+
avatar: option.avatar,
322323
selectedColor: selectedColor,
323324
disabledColor: disabledColor,
324325
backgroundColor: backgroundColor,

packages/flutter_form_builder/test/form_builder_choice_chips_test.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ void main() {
1212
shouldRequestFocus: false,
1313
name: widgetName,
1414
options: const [
15-
FormBuilderFieldOption(key: ValueKey('1'), value: 1),
16-
FormBuilderFieldOption(key: ValueKey('2'), value: 2),
17-
FormBuilderFieldOption(key: ValueKey('3'), value: 3),
15+
FormBuilderChipOption(key: ValueKey('1'), value: 1),
16+
FormBuilderChipOption(key: ValueKey('2'), value: 2),
17+
FormBuilderChipOption(key: ValueKey('3'), value: 3),
1818
],
1919
);
2020
await tester.pumpWidget(buildTestableFieldWidget(testWidget));

0 commit comments

Comments
 (0)