feat(delete):删除里面文件夹
This commit is contained in:
224
lib/calendarcalendar/calendar_choose_widget.dart
Normal file
224
lib/calendarcalendar/calendar_choose_widget.dart
Normal file
@@ -0,0 +1,224 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_common/calendarcalendar/custom_calendar_range_picker_widget.dart';
|
||||
import 'package:flutter_common/calendarcalendar/custom_date_picker.dart';
|
||||
import 'package:flutter_common/utils/date_utils.dart';
|
||||
import 'package:flutter_common/utils/toast_utils.dart';
|
||||
|
||||
///公用区间日期选选择组件
|
||||
class CalendarChooseWidget extends StatefulWidget {
|
||||
final Function? tapAction;
|
||||
final int? intervalDays; //间隔天数 (包括选中第一天和选中的最后一天)
|
||||
final DateTime? selectedDate; //默认选中日期
|
||||
final int? chooseIndex;
|
||||
final double? fontSize;
|
||||
final DateTimeUtilsType? dateTimeUtilsType;
|
||||
final FontWeight? fontWeight;
|
||||
final bool? onlyShow;
|
||||
final Color? textColor;
|
||||
final bool? isScafforrd;
|
||||
|
||||
const CalendarChooseWidget({
|
||||
super.key,
|
||||
this.tapAction,
|
||||
this.intervalDays,
|
||||
this.selectedDate,
|
||||
this.chooseIndex = 0,
|
||||
this.fontSize,
|
||||
this.onlyShow,
|
||||
this.fontWeight,
|
||||
this.dateTimeUtilsType,
|
||||
this.textColor,
|
||||
this.isScafforrd,
|
||||
});
|
||||
|
||||
@override
|
||||
_CalendarChooseWidgetState createState() => _CalendarChooseWidgetState();
|
||||
}
|
||||
|
||||
class _CalendarChooseWidgetState extends State<CalendarChooseWidget> {
|
||||
///开始时间
|
||||
DateTime? startTime = DateTime.now();
|
||||
|
||||
///结束时间
|
||||
DateTime? endTime;
|
||||
|
||||
///选择的时间区间
|
||||
DateTime? rangeStartTime = DateTime.now();
|
||||
DateTime? rangeEndTime;
|
||||
|
||||
///日期选择方法
|
||||
onDateSelected(DateTime? startDate, DateTime? endDate) {
|
||||
setState(() {
|
||||
rangeStartTime = startDate;
|
||||
rangeEndTime = endDate;
|
||||
});
|
||||
}
|
||||
|
||||
///确定按钮
|
||||
onConfirm() {
|
||||
if (widget.intervalDays != null && rangeEndTime != null) {
|
||||
var difference = rangeEndTime!.difference(rangeStartTime!);
|
||||
if (difference.inDays + 1 > widget.intervalDays!) {
|
||||
ToastUtils.showToast(msg: "时间差不能大于${widget.intervalDays}天");
|
||||
} else {
|
||||
changeDate();
|
||||
}
|
||||
} else {
|
||||
changeDate();
|
||||
}
|
||||
}
|
||||
|
||||
///把选中的时间数据赋值给initialStartDate、initialEndDate,并且返回选中的时间
|
||||
changeDate() {
|
||||
setState(() {
|
||||
startTime = rangeStartTime;
|
||||
endTime = rangeEndTime;
|
||||
});
|
||||
widget.tapAction
|
||||
?.call({"startTime": startTime, "endTime": endTime ?? startTime});
|
||||
// Navigator.of(context).pop();
|
||||
}
|
||||
|
||||
///日期显示
|
||||
String get dealTimeString {
|
||||
String? time = "";
|
||||
if (endTime == null) {
|
||||
time = DateTimeUtils.dateTimeUtilsTool(
|
||||
dateTime: startTime.toString(),
|
||||
dateTimeUtilsType:
|
||||
widget.dateTimeUtilsType ?? DateTimeUtilsType.yearMonthDay,
|
||||
);
|
||||
} else if (endTime == startTime) {
|
||||
time = DateTimeUtils.dateTimeUtilsTool(
|
||||
dateTime: startTime.toString(),
|
||||
dateTimeUtilsType:
|
||||
widget.dateTimeUtilsType ?? DateTimeUtilsType.yearMonthDay,
|
||||
);
|
||||
} else {
|
||||
time = "${DateTimeUtils.dateTimeUtilsTool(
|
||||
dateTime: startTime.toString(),
|
||||
dateTimeUtilsType:
|
||||
widget.dateTimeUtilsType ?? DateTimeUtilsType.yearMonthDay,
|
||||
)} - ${DateTimeUtils.dateTimeUtilsTool(
|
||||
dateTime: endTime.toString(),
|
||||
dateTimeUtilsType:
|
||||
widget.dateTimeUtilsType ?? DateTimeUtilsType.yearMonthDay,
|
||||
)}";
|
||||
}
|
||||
return time;
|
||||
}
|
||||
|
||||
///日历弹窗
|
||||
onTapDate() {
|
||||
if (widget.chooseIndex == 1) {
|
||||
ToastUtils.showBottomSheet(
|
||||
context: context,
|
||||
title: '选择时间',
|
||||
height: MediaQuery.of(context).size.height / 2,
|
||||
isShowConfirm: true,
|
||||
contentWidget: CustomDatePicker(
|
||||
initialDate: DateTime.now(),
|
||||
firstDate: DateTime(DateTime.now().year - 2),
|
||||
lastDate: DateTime(DateTime.now().year + 2),
|
||||
onDateChanged: (dateTime) {
|
||||
rangeStartTime = dateTime;
|
||||
rangeEndTime = dateTime;
|
||||
},
|
||||
),
|
||||
onConfirm: onConfirm,
|
||||
);
|
||||
} else {
|
||||
ToastUtils.showBottomSheet(
|
||||
context: context,
|
||||
title: '选择时间',
|
||||
height: MediaQuery.of(context).size.height / 2,
|
||||
isShowConfirm: true,
|
||||
contentWidget: CustomCalendarRangePickerWidget(
|
||||
firstDate: DateTime(DateTime.now().year - 2),
|
||||
lastDate: DateTime(DateTime.now().year + 2),
|
||||
initialStartDate: startTime,
|
||||
initialEndDate: endTime,
|
||||
selectedDateDecoration: BoxDecoration(
|
||||
color: const Color(0xff4D6FD5),
|
||||
shape: BoxShape.rectangle,
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
),
|
||||
rangeBackgroundColor: const Color(0xffEDF0FF),
|
||||
weekendTextStyle: const TextStyle(
|
||||
color: Color(0xff4D6FD5),
|
||||
fontSize: 12,
|
||||
),
|
||||
weekTextStyle: const TextStyle(
|
||||
color: Color(0xff333333),
|
||||
fontSize: 12,
|
||||
),
|
||||
yearTextStyle: const TextStyle(
|
||||
color: Color(0xff333333),
|
||||
fontSize: 17,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
onDateSelected: onDateSelected,
|
||||
),
|
||||
onConfirm: onConfirm,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
if (widget.selectedDate != null) {
|
||||
startTime = widget.selectedDate;
|
||||
rangeStartTime = widget.selectedDate;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return widget.isScafforrd == true
|
||||
? Scaffold(
|
||||
body: InkWell(
|
||||
onTap: widget.onlyShow == true ? null : onTapDate,
|
||||
child: Row(
|
||||
children: [
|
||||
Text(
|
||||
dealTimeString,
|
||||
style: TextStyle(
|
||||
color: widget.textColor ?? const Color(0xff1A1A1A),
|
||||
fontSize: widget.fontSize ?? 16,
|
||||
fontWeight: widget.fontWeight,
|
||||
),
|
||||
),
|
||||
widget.onlyShow == true
|
||||
? const SizedBox()
|
||||
: const Icon(
|
||||
Icons.keyboard_arrow_down_rounded,
|
||||
size: 15,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
: InkWell(
|
||||
onTap: widget.onlyShow == true ? null : onTapDate,
|
||||
child: Row(
|
||||
children: [
|
||||
Text(
|
||||
dealTimeString,
|
||||
style: TextStyle(
|
||||
color: widget.textColor ?? const Color(0xff1A1A1A),
|
||||
fontSize: widget.fontSize ?? 16,
|
||||
fontWeight: widget.fontWeight,
|
||||
),
|
||||
),
|
||||
widget.onlyShow == true
|
||||
? const SizedBox()
|
||||
: const Icon(
|
||||
Icons.keyboard_arrow_down_rounded,
|
||||
size: 15,
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
1093
lib/calendarcalendar/custom_calendar_range_picker_widget.dart
Normal file
1093
lib/calendarcalendar/custom_calendar_range_picker_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
1343
lib/calendarcalendar/custom_date_picker.dart
Normal file
1343
lib/calendarcalendar/custom_date_picker.dart
Normal file
File diff suppressed because it is too large
Load Diff
1093
lib/calendarcalendar/custom_multiple_choose_date_picker.dart
Executable file
1093
lib/calendarcalendar/custom_multiple_choose_date_picker.dart
Executable file
File diff suppressed because it is too large
Load Diff
1344
lib/calendarcalendar/custom_single_choose_date_picker.dart
Executable file
1344
lib/calendarcalendar/custom_single_choose_date_picker.dart
Executable file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user