Skip to content

Commit cc44eb9

Browse files
authored
Added customization support for color picker field
* Changed suffixIcon of TextField from container to colored circular icon * Added possibility to provide custom color preview widget (colorPreviewBuilder) overriding the default circular appearance
1 parent 7ad61ad commit cc44eb9

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

lib/src/fields/form_builder_color_picker.dart

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'dart:async';
2+
import 'dart:math';
23

34
import 'package:flutter/material.dart';
45
import 'package:flutter/services.dart';
@@ -66,6 +67,8 @@ class FormBuilderColorPickerField extends FormBuilderField<Color> {
6667
final bool enableInteractiveSelection;
6768
final InputCounterWidgetBuilder? buildCounter;
6869

70+
final Widget Function(Color?)? colorPreviewBuilder;
71+
6972
FormBuilderColorPickerField({
7073
Key? key,
7174
//From Super
@@ -109,6 +112,7 @@ class FormBuilderColorPickerField extends FormBuilderField<Color> {
109112
this.enableInteractiveSelection = true,
110113
this.buildCounter,
111114
this.controller,
115+
this.colorPreviewBuilder,
112116
}) : super(
113117
key: key,
114118
initialValue: initialValue,
@@ -127,23 +131,19 @@ class FormBuilderColorPickerField extends FormBuilderField<Color> {
127131
return TextField(
128132
style: style,
129133
decoration: state.decoration.copyWith(
130-
suffixIcon: LayoutBuilder(
131-
key: ObjectKey(state.value),
132-
builder: (context, constraints) {
133-
return Container(
134-
key: ObjectKey(state.value),
135-
height: constraints.minHeight,
136-
width: constraints.minHeight,
137-
decoration: BoxDecoration(
138-
color: state.value,
139-
shape: BoxShape.circle,
140-
border: Border.all(
141-
color: Colors.black,
142-
),
134+
suffixIcon: colorPreviewBuilder != null
135+
? colorPreviewBuilder(field.value)
136+
: LayoutBuilder(
137+
key: ObjectKey(state.value),
138+
builder: (context, constraints) {
139+
return Icon(
140+
Icons.circle,
141+
key: ObjectKey(state.value),
142+
size: constraints.minHeight,
143+
color: state.value,
144+
);
145+
},
143146
),
144-
);
145-
},
146-
),
147147
),
148148
enabled: state.enabled,
149149
readOnly: readOnly,
@@ -178,8 +178,7 @@ class FormBuilderColorPickerField extends FormBuilderField<Color> {
178178
);
179179

180180
@override
181-
FormBuilderColorPickerFieldState createState() =>
182-
FormBuilderColorPickerFieldState();
181+
FormBuilderColorPickerFieldState createState() => FormBuilderColorPickerFieldState();
183182
}
184183

185184
class FormBuilderColorPickerFieldState

0 commit comments

Comments
 (0)