Adding the possibility to specify the initial date selected in the date picker dialog.
This commit is contained in:
parent
d3fe446cdc
commit
bf47b6c6c6
6 changed files with 27 additions and 3 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
##2.1.2
|
||||||
|
|
||||||
|
* Adding the possibility to specify the initial date selected in the date picker dialog.
|
||||||
|
|
||||||
##2.1.1
|
##2.1.1
|
||||||
|
|
||||||
* Formatting with Dart FM
|
* Formatting with Dart FM
|
||||||
|
|
|
@ -15,7 +15,7 @@ In the `pubspec.yaml` of your flutter project, add the following dependency:
|
||||||
```yaml
|
```yaml
|
||||||
dependencies:
|
dependencies:
|
||||||
...
|
...
|
||||||
date_field: ^2.1.0
|
date_field: ^2.1.2
|
||||||
```
|
```
|
||||||
|
|
||||||
In your library add the following import:
|
In your library add the following import:
|
||||||
|
|
|
@ -73,6 +73,8 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||||
suffixIcon: Icon(Icons.event_note),
|
suffixIcon: Icon(Icons.event_note),
|
||||||
labelText: 'My Super Date Time Field',
|
labelText: 'My Super Date Time Field',
|
||||||
),
|
),
|
||||||
|
firstDate: DateTime.now().add(const Duration(days: 10)),
|
||||||
|
initialDate: DateTime.now().add(const Duration(days: 10)),
|
||||||
autovalidateMode: AutovalidateMode.always,
|
autovalidateMode: AutovalidateMode.always,
|
||||||
validator: (DateTime? e) =>
|
validator: (DateTime? e) =>
|
||||||
(e?.day ?? 0) == 1 ? 'Please not the first day' : null,
|
(e?.day ?? 0) == 1 ? 'Please not the first day' : null,
|
||||||
|
|
|
@ -22,6 +22,7 @@ class DateTimeField extends StatelessWidget {
|
||||||
this.mode = DateTimeFieldPickerMode.dateAndTime,
|
this.mode = DateTimeFieldPickerMode.dateAndTime,
|
||||||
this.initialEntryMode = DatePickerEntryMode.calendar,
|
this.initialEntryMode = DatePickerEntryMode.calendar,
|
||||||
this.dateTextStyle,
|
this.dateTextStyle,
|
||||||
|
this.initialDate,
|
||||||
DateTime? firstDate,
|
DateTime? firstDate,
|
||||||
DateTime? lastDate,
|
DateTime? lastDate,
|
||||||
DateFormat? dateFormat,
|
DateFormat? dateFormat,
|
||||||
|
@ -36,6 +37,7 @@ class DateTimeField extends StatelessWidget {
|
||||||
this.selectedDate,
|
this.selectedDate,
|
||||||
this.decoration,
|
this.decoration,
|
||||||
this.enabled,
|
this.enabled,
|
||||||
|
this.initialDate,
|
||||||
this.dateTextStyle,
|
this.dateTextStyle,
|
||||||
this.initialEntryMode = DatePickerEntryMode.calendar,
|
this.initialEntryMode = DatePickerEntryMode.calendar,
|
||||||
DateTime? firstDate,
|
DateTime? firstDate,
|
||||||
|
@ -59,6 +61,9 @@ class DateTimeField extends StatelessWidget {
|
||||||
/// The last date that the user can select (default is 2100)
|
/// The last date that the user can select (default is 2100)
|
||||||
final DateTime lastDate;
|
final DateTime lastDate;
|
||||||
|
|
||||||
|
/// The date that will be selected by default in the calendar view.
|
||||||
|
final DateTime? initialDate;
|
||||||
|
|
||||||
/// Let you choose the [DatePickerMode] for the date picker! (default is [DatePickerMode.day]
|
/// Let you choose the [DatePickerMode] for the date picker! (default is [DatePickerMode.day]
|
||||||
final DatePickerMode? initialDatePickerMode;
|
final DatePickerMode? initialDatePickerMode;
|
||||||
|
|
||||||
|
@ -82,7 +87,18 @@ class DateTimeField extends StatelessWidget {
|
||||||
|
|
||||||
/// Shows a dialog asking the user to pick a date !
|
/// Shows a dialog asking the user to pick a date !
|
||||||
Future<void> _selectDate(BuildContext context) async {
|
Future<void> _selectDate(BuildContext context) async {
|
||||||
final DateTime initialDateTime = selectedDate ?? DateTime.now();
|
final DateTime initialDateTime;
|
||||||
|
|
||||||
|
if (selectedDate != null) {
|
||||||
|
initialDateTime = selectedDate!;
|
||||||
|
} else {
|
||||||
|
final DateTime now = DateTime.now();
|
||||||
|
if (firstDate.isAfter(now) || lastDate.isBefore(now)) {
|
||||||
|
initialDateTime = initialDate ?? lastDate;
|
||||||
|
} else {
|
||||||
|
initialDateTime = now;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (Theme.of(context).platform == TargetPlatform.iOS) {
|
if (Theme.of(context).platform == TargetPlatform.iOS) {
|
||||||
showModalBottomSheet<void>(
|
showModalBottomSheet<void>(
|
||||||
|
|
|
@ -24,6 +24,7 @@ class DateTimeFormField extends FormField<DateTime> {
|
||||||
DateFormat? dateFormat,
|
DateFormat? dateFormat,
|
||||||
DateTime? firstDate,
|
DateTime? firstDate,
|
||||||
DateTime? lastDate,
|
DateTime? lastDate,
|
||||||
|
DateTime? initialDate,
|
||||||
ValueChanged<DateTime>? onDateSelected,
|
ValueChanged<DateTime>? onDateSelected,
|
||||||
InputDecoration? decoration,
|
InputDecoration? decoration,
|
||||||
DatePickerEntryMode initialEntryMode = DatePickerEntryMode.calendar,
|
DatePickerEntryMode initialEntryMode = DatePickerEntryMode.calendar,
|
||||||
|
@ -54,6 +55,7 @@ class DateTimeFormField extends FormField<DateTime> {
|
||||||
|
|
||||||
return DateTimeField(
|
return DateTimeField(
|
||||||
firstDate: firstDate,
|
firstDate: firstDate,
|
||||||
|
initialDate: initialDate,
|
||||||
lastDate: lastDate,
|
lastDate: lastDate,
|
||||||
decoration: effectiveDecoration,
|
decoration: effectiveDecoration,
|
||||||
initialDatePickerMode: initialDatePickerMode,
|
initialDatePickerMode: initialDatePickerMode,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: date_field
|
name: date_field
|
||||||
description: A widget in the form of a field that lets people choose a date, a time or both.
|
description: A widget in the form of a field that lets people choose a date, a time or both.
|
||||||
version: 2.1.1
|
version: 2.1.2
|
||||||
homepage: 'https://github.com/GaspardMerten/date_field'
|
homepage: 'https://github.com/GaspardMerten/date_field'
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
|
|
Loading…
Reference in a new issue