showCupertinoDatetimePicker function
Future<DateTime?>
showCupertinoDatetimePicker(
- BuildContext context, {
- String? titleText,
- DateTime? initialDateTime,
- 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,
- bool? showSeconds,
- int? minuteInterval,
- int? secondInterval,
显示 iOS 风格的日期时间选择器
Implementation
Future<DateTime?> showCupertinoDatetimePicker(BuildContext context, {
String? titleText,
DateTime? initialDateTime,
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,
bool? showSeconds,
int? minuteInterval,
int? secondInterval,
}) async {
DateTime? result = initialDateTime ?? 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)
.datetimePickerTitle,
elevation: 0,
backgroundColor: Theme
.of(context)
.colorScheme
.surface,
contentBuilder: (context) =>
TxCupertinoDatetimePicker(
initialDatetime: result,
minimumDatetime: minimumDate,
maximumDatetime: maximumDate,
backgroundColor: backgroundColor,
onDatetimeChanged: (DateTime datetime) => result = datetime,
itemExtent: itemExtent,
useMagnifier: useMagnifier,
magnification: magnification,
diameterRatio: diameterRatio,
textStyle: textStyle,
unselectedColor: unselectedColor,
unselectedTextStyle: unselectedTextStyle,
showSeconds: showSeconds,
minuteInterval: minuteInterval,
secondInterval: secondInterval,
minimumYear: minimumYear,
maximumYear: maximumYear,
squeeze: squeeze,
),
onConfirm: () => Navigator.pop(context, result),
);
}