showCupertinoMonthPicker function
Future<DateTime?>
showCupertinoMonthPicker(
- BuildContext context, {
- String? titleText,
- DateTime? initialMonth,
- DateTime? minimumMonth,
- DateTime? maximumMonth,
- 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?> showCupertinoMonthPicker(
BuildContext context, {
String? titleText,
DateTime? initialMonth,
DateTime? minimumMonth,
DateTime? maximumMonth,
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 = initialMonth ?? DateTime.now();
if (minimumMonth != null && result.isBefore(minimumMonth)) {
result = minimumMonth;
}
if (maximumMonth != null && result.isAfter(maximumMonth)) {
result = maximumMonth;
}
return await showDefaultBottomSheet<DateTime>(
context,
title: titleText ?? TxLocalizations.of(context).monthPickerTitle,
elevation: 0,
backgroundColor: Theme.of(context).colorScheme.surface,
contentBuilder: (context) => TxCupertinoMonthPicker(
initialMonth: result,
minimumYear: minimumYear,
maximumYear: maximumYear,
minimumDate: minimumMonth,
maximumDate: maximumMonth,
backgroundColor: backgroundColor,
onMonthChanged: (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),
);
}