Add controller support
This commit is contained in:
parent
190a5d734b
commit
c8214efdb9
2 changed files with 29 additions and 17 deletions
|
@ -31,27 +31,37 @@ class DateTimeFormField extends FormField<DateTime> {
|
|||
DatePickerMode initialDatePickerMode = DatePickerMode.day,
|
||||
DateTimeFieldPickerMode mode = DateTimeFieldPickerMode.dateAndTime,
|
||||
TimePickerEntryMode initialTimePickerEntryMode = TimePickerEntryMode.dial,
|
||||
DateTimeFormFieldController? controller,
|
||||
DateTimeFieldCreator fieldCreator = DateTimeField.new,
|
||||
}) : super(
|
||||
key: key,
|
||||
initialValue: initialValue,
|
||||
initialValue:
|
||||
initialValue == null && controller != null ? controller.selectedDate : initialValue,
|
||||
onSaved: onSaved,
|
||||
validator: validator,
|
||||
autovalidateMode: autovalidateMode,
|
||||
enabled: enabled,
|
||||
builder: (FormFieldState<DateTime> field) {
|
||||
if (controller != null) {
|
||||
controller.addListener(() {
|
||||
field.didChange(controller.selectedDate);
|
||||
});
|
||||
}
|
||||
|
||||
// Theme defaults are applied inside the _InputDropdown widget
|
||||
final InputDecoration _decorationWithThemeDefaults =
|
||||
decoration ?? const InputDecoration();
|
||||
|
||||
final InputDecoration effectiveDecoration =
|
||||
_decorationWithThemeDefaults.copyWith(
|
||||
errorText: field.errorText);
|
||||
_decorationWithThemeDefaults.copyWith(errorText: field.errorText);
|
||||
|
||||
void onChangedHandler(DateTime value) {
|
||||
if (onDateSelected != null) {
|
||||
onDateSelected(value);
|
||||
}
|
||||
if (controller != null) {
|
||||
controller.selectedDate = value;
|
||||
}
|
||||
field.didChange(value);
|
||||
}
|
||||
|
||||
|
@ -77,3 +87,12 @@ class DateTimeFormField extends FormField<DateTime> {
|
|||
@override
|
||||
FormFieldState<DateTime> createState() => FormFieldState<DateTime>();
|
||||
}
|
||||
|
||||
class DateTimeFormFieldController extends ChangeNotifier {
|
||||
DateTime? _selectedDate;
|
||||
DateTime? get selectedDate => _selectedDate;
|
||||
set selectedDate(DateTime? value) {
|
||||
_selectedDate = value;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue