57 lines
1.8 KiB
Dart
Executable File
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;
|
|
}
|
|
);
|
|
}
|
|
}
|