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

import 'dart:collection';
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
4 years ago
import 'constants/constants.dart';
import 'flutter_custom_calendar.dart';
import 'model/date_model.dart';
/**
*
*/
class CalendarConfiguration {
//默认是单选,可以配置为MODE_SINGLE_SELECTMODE_MULTI_SELECT
3 years ago
CalendarSelectedMode? selectMode;
//仅展示月视图,仅展示周视图,支持月视图和周视图切换
3 years ago
int? showMode;
//日历显示的最小年份和最大年份
3 years ago
int? minYear;
int? maxYear;
//日历显示的最小年份的月份,最大年份的月份
3 years ago
int? minYearMonth;
int? maxYearMonth;
//日历显示的当前的年份和月份
3 years ago
int? nowYear;
int? nowMonth;
//可操作的范围设置,比如点击选择
3 years ago
int? minSelectYear;
int? minSelectMonth;
int? minSelectDay;
3 years ago
int? maxSelectYear;
int? maxSelectMonth;
int? maxSelectDay; //注意:不能超过对应月份的总天数
3 years ago
DateModel? selectDateModel; //默认被选中的item用于单选
HashSet<DateModel?>? defaultSelectedDateList; //默认被选中的日期set用于多选
int? maxMultiSelectCount; //多选,最多选多少个
Map<DateModel, Object>? extraDataMap = new Map(); //自定义额外的数据
/**
* UI
*/
3 years ago
double? itemSize; //默认是屏幕宽度/7
double? verticalSpacing; //日历item之间的竖直方向间距默认10
BoxDecoration? boxDecoration; //整体的背景设置
EdgeInsetsGeometry? padding;
EdgeInsetsGeometry? margin;
//支持自定义绘制
3 years ago
DayWidgetBuilder? dayWidgetBuilder; //创建日历item
WeekBarItemWidgetBuilder? weekBarItemWidgetBuilder; //创建顶部的weekbar
/**
*
*/
//各种事件回调
3 years ago
OnMonthChange? monthChange; //月份切换事件 (已弃用,交给multiMonthChanges来实现
OnCalendarSelect? calendarSelect; //点击选择事件
OnCalendarSelect? unCalendarSelect; //点击选择事件
late OnMultiSelectOutOfRange multiSelectOutOfRange; //多选超出指定范围
OnMultiSelectOutOfSize? multiSelectOutOfSize; //多选超出限制个数
3 years ago
ObserverList<OnMonthChange>? monthChangeListeners =
ObserverList<OnMonthChange>(); //保存多个月份监听的事件
3 years ago
ObserverList<OnWeekChange>? weekChangeListeners =
ObserverList<OnWeekChange>(); //周视图切换
/**
*
*/
3 years ago
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}';
}
}