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; } ); } }