app-starlock/lib/tools/showCalendar.dart

57 lines
1.8 KiB
Dart
Raw Permalink Normal View History

2023-07-13 14:13:44 +08:00
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
2024-04-26 15:38:59 +08:00
import '../app_settings/app_settings.dart';
2024-01-23 17:29:18 +08:00
typedef SelectDateCallback(DateTime dateTime);
2023-07-13 14:13:44 +08:00
class ShowCalendar extends StatelessWidget {
2024-01-23 17:48:06 +08:00
SelectDateCallback? selectAction;
2023-07-15 15:11:28 +08:00
DatePickerMode? datePickerMode;
2023-07-13 14:13:44 +08:00
2024-01-23 17:48:06 +08:00
ShowCalendar({Key? key, this.selectAction, this.datePickerMode}) : super(key: key);
2023-07-13 14:13:44 +08:00
@override
Widget build(BuildContext context) {
return Dialog(
// insetPadding: EdgeInsets.all(10), //距离
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(20))), //形状
backgroundColor: Colors.white,
clipBehavior: Clip.antiAlias, //强制裁剪
elevation: 10,
child: SizedBox(
//需要在内部限制下高度和宽度才能更好的显示
height: 350,
width: 1.sw - 40.w,
2023-07-15 15:11:28 +08:00
child: _calendarDatePicker(datePickerMode!),
2023-07-13 14:13:44 +08:00
),
);
}
CalendarDatePicker _calendarDatePicker(DatePickerMode mode){
return CalendarDatePicker(
initialDate: DateTime.now(), // 初始化选中日期
// currentDate: DateTime(2020, 10, 18),
firstDate: DateTime(2000, 1, 1), // 开始日期
lastDate: DateTime(2100, 1, 1), // 结束日期
initialCalendarMode: mode, // 日期选择样式
// 选中日期改变回调函数
2024-01-23 17:48:06 +08:00
onDateChanged:selectAction!,
2023-07-13 14:13:44 +08:00
// 月份改变回调函数
onDisplayedMonthChanged: (dateTime){
2024-08-19 15:24:14 +08:00
// AppLog.log("onDisplayedMonthChanged $dateTime");
2023-07-13 14:13:44 +08:00
},
// 筛选日期可不可点回调函数
selectableDayPredicate: (dayTime){
if(dayTime == DateTime(2020, 10, 15) || dayTime == DateTime(2020, 10, 16) || dayTime == DateTime(2020, 10, 17)) {
return false;
}
return true;
}
);
}
}