Skip to content

Commit 43f797f

Browse files
committed
DatePicker/TimePicker request focus, Removed unnecessary input borders
to custom fields, Surround FormInput option labels around string
1 parent 5de3f17 commit 43f797f

File tree

2 files changed

+75
-47
lines changed

2 files changed

+75
-47
lines changed

.idea/workspace.xml

Lines changed: 39 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/form_builder.dart

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ class _FormBuilderState extends State<FormBuilder> {
224224
hint: Text(formControl.hint ?? ''),
225225
items: formControls[count].options.map((option) {
226226
return DropdownMenuItem(
227-
child: Text(option.label ?? option.value),
227+
child: Text("${option.label ?? option.value}"),
228228
value: option.value,
229229
);
230230
}).toList(),
@@ -262,8 +262,9 @@ class _FormBuilderState extends State<FormBuilder> {
262262
dense: true,
263263
isThreeLine: false,
264264
contentPadding: EdgeInsets.all(0.0),
265-
title: Text(formControls[count].options[i].label ??
266-
formControls[count].options[i].value),
265+
leading: null,
266+
title: Text(
267+
"${formControls[count].options[i].label ?? formControls[count].options[i].value}"),
267268
trailing: Radio<dynamic>(
268269
value: formControls[count].options[i].value,
269270
groupValue: field.value,
@@ -293,6 +294,8 @@ class _FormBuilderState extends State<FormBuilder> {
293294
labelText: formControl.label,
294295
helperText: formControl.hint ?? "",
295296
errorText: field.errorText,
297+
contentPadding: EdgeInsets.only(top: 10.0, bottom: 0.0),
298+
border: InputBorder.none,
296299
),
297300
child: Column(
298301
children: radioList,
@@ -320,24 +323,31 @@ class _FormBuilderState extends State<FormBuilder> {
320323
labelText: formControl.label,
321324
helperText: formControl.hint,
322325
errorText: field.errorText,
326+
contentPadding: EdgeInsets.only(top: 10.0, bottom: 10.0),
327+
border: InputBorder.none,
323328
),
324-
child: CupertinoSegmentedControl(
325-
borderColor: Theme.of(context).primaryColor,
326-
selectedColor: Theme.of(context).primaryColor,
327-
pressedColor: Theme.of(context).primaryColor,
328-
groupValue: field.value,
329-
children: Map.fromIterable(
330-
formControls[count].options,
331-
key: (v) => v.value,
332-
value: (v) =>
333-
Text(v.label != null ? "${v.label}" : "${v.value}"),
329+
child: Padding(
330+
padding: EdgeInsets.only(top: 10.0),
331+
child: CupertinoSegmentedControl(
332+
borderColor: Theme.of(context).primaryColor,
333+
selectedColor: Theme.of(context).primaryColor,
334+
pressedColor: Theme.of(context).primaryColor,
335+
groupValue: field.value,
336+
children: Map.fromIterable(
337+
formControls[count].options,
338+
key: (v) => v.value,
339+
value: (v) => Padding(
340+
padding: EdgeInsets.symmetric(vertical: 10.0),
341+
child: Text("${v.label ?? v.value}"),
342+
),
343+
),
344+
onValueChanged: (dynamic value) {
345+
setState(() {
346+
formControls[count].value = value;
347+
});
348+
field.didChange(value);
349+
},
334350
),
335-
onValueChanged: (dynamic value) {
336-
setState(() {
337-
formControls[count].value = value;
338-
});
339-
field.didChange(value);
340-
},
341351
),
342352
);
343353
},
@@ -626,6 +636,8 @@ class _FormBuilderState extends State<FormBuilder> {
626636
labelText: formControl.label,
627637
helperText: formControl.hint ?? "",
628638
errorText: field.errorText,
639+
contentPadding: EdgeInsets.only(top: 10.0, bottom: 0.0),
640+
border: InputBorder.none,
629641
),
630642
child: Column(
631643
children: checkboxList,
@@ -716,9 +728,10 @@ class _FormBuilderState extends State<FormBuilder> {
716728
_generateDatePicker(FormBuilderInput formControl, int count) {
717729
TextEditingController _inputController =
718730
new TextEditingController(text: formControl.value);
731+
FocusNode _focusNode = FocusNode();
719732
return GestureDetector(
720733
onTap: () {
721-
//TODO: Set focus on textfield when selected
734+
FocusScope.of(context).requestFocus(_focusNode);
722735
_showDatePickerDialog(
723736
context,
724737
initialDate: DateTime.tryParse(_inputController.value.text),
@@ -761,9 +774,10 @@ class _FormBuilderState extends State<FormBuilder> {
761774
_generateTimePicker(FormBuilderInput formControl, int count) {
762775
TextEditingController _inputController =
763776
new TextEditingController(text: formControl.value);
777+
FocusNode _focusNode = new FocusNode();
764778
return GestureDetector(
765779
onTap: () {
766-
//TODO: Set focus on textfield when selected
780+
FocusScope.of(context).requestFocus(_focusNode);
767781
_showTimePickerDialog(
768782
context,
769783
// initialTime: new Time, //FIXME: Parse time from string
@@ -781,6 +795,7 @@ class _FormBuilderState extends State<FormBuilder> {
781795
child: AbsorbPointer(
782796
child: TextFormField(
783797
controller: _inputController,
798+
focusNode: _focusNode,
784799
validator: (value) {
785800
if (formControl.require && (value.isEmpty || value == null))
786801
return "${formControl.label} is required";

0 commit comments

Comments
 (0)