app-starlock/lib/tools/showCalendar.dart
2024-05-18 09:37:50 +08:00

57 lines
1.8 KiB
Dart
Executable File

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../app_settings/app_settings.dart';
typedef SelectDateCallback(DateTime dateTime);
class ShowCalendar extends StatelessWidget {
SelectDateCallback? selectAction;
DatePickerMode? datePickerMode;
ShowCalendar({Key? key, this.selectAction, this.datePickerMode}) : super(key: key);
@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,
child: _calendarDatePicker(datePickerMode!),
),
);
}
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, // 日期选择样式
// 选中日期改变回调函数
onDateChanged:selectAction!,
// 月份改变回调函数
onDisplayedMonthChanged: (dateTime){
AppLog.log("onDisplayedMonthChanged $dateTime");
},
// 筛选日期可不可点回调函数
selectableDayPredicate: (dayTime){
if(dayTime == DateTime(2020, 10, 15) || dayTime == DateTime(2020, 10, 16) || dayTime == DateTime(2020, 10, 17)) {
return false;
}
return true;
}
);
}
}