You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
flutter_custom_calendar/lib/configuration.dart

123 lines
4.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import 'dart:collection';
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'constants/constants.dart';
import 'flutter_custom_calendar.dart';
import 'model/date_model.dart';
/**
* 配置信息类
*/
class CalendarConfiguration {
//默认是单选,可以配置为MODE_SINGLE_SELECTMODE_MULTI_SELECT
CalendarSelectedMode? selectMode;
//仅展示月视图,仅展示周视图,支持月视图和周视图切换
int? showMode;
//日历显示的最小年份和最大年份
int? minYear;
int? maxYear;
//日历显示的最小年份的月份,最大年份的月份
int? minYearMonth;
int? maxYearMonth;
//日历显示的当前的年份和月份
int? nowYear;
int? nowMonth;
//可操作的范围设置,比如点击选择
int? minSelectYear;
int? minSelectMonth;
int? minSelectDay;
int? maxSelectYear;
int? maxSelectMonth;
int? maxSelectDay; //注意:不能超过对应月份的总天数
DateModel? selectDateModel; //默认被选中的item用于单选
HashSet<DateModel?>? defaultSelectedDateList; //默认被选中的日期set用于多选
int? maxMultiSelectCount; //多选,最多选多少个
Map<DateModel, Object>? extraDataMap = new Map(); //自定义额外的数据
/**
* UI绘制方面的绘制
*/
double? itemSize; //默认是屏幕宽度/7
double? verticalSpacing; //日历item之间的竖直方向间距默认10
BoxDecoration? boxDecoration; //整体的背景设置
EdgeInsetsGeometry? padding;
EdgeInsetsGeometry? margin;
//支持自定义绘制
DayWidgetBuilder? dayWidgetBuilder; //创建日历item
WeekBarItemWidgetBuilder? weekBarItemWidgetBuilder; //创建顶部的weekbar
/**
* 监听变化
*/
//各种事件回调
OnMonthChange? monthChange; //月份切换事件 (已弃用,交给multiMonthChanges来实现
OnCalendarSelect? calendarSelect; //点击选择事件
OnCalendarSelect? unCalendarSelect; //点击选择事件
late OnMultiSelectOutOfRange multiSelectOutOfRange; //多选超出指定范围
OnMultiSelectOutOfSize? multiSelectOutOfSize; //多选超出限制个数
ObserverList<OnMonthChange>? monthChangeListeners =
ObserverList<OnMonthChange>(); //保存多个月份监听的事件
ObserverList<OnWeekChange>? weekChangeListeners =
ObserverList<OnWeekChange>(); //周视图切换
/**
* 下面的信息不是配置的,是根据配置信息进行计算出来的
*/
List<DateModel>? monthList = []; //月份list
List<DateModel>? weekList = [] ; //星期list
PageController? monthController; //月份的controller
PageController? weekController; //星期的controller
DateModel? minSelectDate;
DateModel? maxSelectDate;
/// 首日偏移量 first day offset
/// first day = (first day of month or week) + offset
final int offset;
CalendarConfiguration(
{this.selectMode,
this.minYear,
this.maxYear,
this.minYearMonth,
this.maxYearMonth,
this.nowYear,
this.nowMonth,
this.minSelectYear,
this.minSelectMonth,
this.minSelectDay,
this.maxSelectYear,
this.maxSelectMonth,
this.maxSelectDay,
this.defaultSelectedDateList,
this.selectDateModel,
this.maxMultiSelectCount,
this.extraDataMap,
this.monthList,
this.weekList,
this.monthController,
this.weekController,
this.verticalSpacing,
this.itemSize,
this.showMode,
this.padding,
this.margin,
this.offset = 0});
@override
String toString() {
return 'CalendarConfiguration{selectMode: $selectMode, minYear: $minYear, maxYear: $maxYear, minYearMonth: $minYearMonth, maxYearMonth: $maxYearMonth, nowYear: $nowYear, nowMonth: $nowMonth, minSelectYear: $minSelectYear, minSelectMonth: $minSelectMonth, minSelectDay: $minSelectDay, maxSelectYear: $maxSelectYear, maxSelectMonth: $maxSelectMonth, maxSelectDay: $maxSelectDay, defaultSelectedDateList: $defaultSelectedDateList, maxMultiSelectCount: $maxMultiSelectCount, extraDataMap: $extraDataMap, monthList: $monthList, weekList: $weekList, monthController: $monthController, weekController: $weekController}';
}
}