showCupertinoDatePicker function
Future<DateTime?>
showCupertinoDatePicker(
- BuildContext context, {
- String? titleText,
- DateTime? initialDate,
- DateTime? minimumDate,
- DateTime? maximumDate,
- int? minimumYear,
- int? maximumYear,
- Color? backgroundColor,
- DatePickerDateOrder? dateOrder,
- double? itemExtent,
- bool? useMagnifier,
- double? magnification,
- double? diameterRatio,
- TextStyle? textStyle,
- TextStyle? unselectedTextStyle,
- Color? unselectedColor,
- double? squeeze,
显示 iOS 风格的日期选择器
Implementation
Future<DateTime?> showCupertinoDatePicker(BuildContext context, {
String? titleText,
DateTime? initialDate,
DateTime? minimumDate,
DateTime? maximumDate,
int? minimumYear,
int? maximumYear,
Color? backgroundColor,
DatePickerDateOrder? dateOrder,
double? itemExtent,
bool? useMagnifier,
double? magnification,
double? diameterRatio,
TextStyle? textStyle,
TextStyle? unselectedTextStyle,
Color? unselectedColor,
double? squeeze,
}) async {
DateTime? result = initialDate ?? DateTime.now();
if (minimumDate != null && result.isBefore(minimumDate)) {
result = minimumDate;
}
if (maximumDate != null && result.isAfter(maximumDate)) {
result = maximumDate;
}
return await showDefaultBottomSheet<DateTime>(
context,
title: titleText ?? TxLocalizations
.of(context)
.datePickerTitle,
elevation: 0,
backgroundColor: Theme
.of(context)
.colorScheme
.surface,
contentBuilder: (context) =>
TxCupertinoDatePicker(
initialDate: result,
minimumYear: minimumYear,
maximumYear: maximumYear,
minimumDate: minimumDate,
maximumDate: maximumDate,
backgroundColor: backgroundColor,
onDateChanged: (DateTime date) => result = date,
dateOrder: dateOrder,
itemExtent: itemExtent,
useMagnifier: useMagnifier,
magnification: magnification,
diameterRatio: diameterRatio,
textStyle: textStyle,
unselectedColor: unselectedColor,
unselectedTextStyle: unselectedTextStyle,
),
onConfirm: () => Navigator.pop(context, result),
);
}