refactor: 重构提醒通知系统

This commit is contained in:
zl-q
2026-04-01 00:42:34 +08:00
parent 9a231dae9e
commit 6722f3d74b
21 changed files with 375 additions and 171 deletions
@@ -378,24 +378,11 @@ class _CreateEventSheetState extends State<CreateEventSheet>
_startDate = date;
_startTime = time;
if (_endDate != null && _endTime != null) {
final endDateTime = DateTime(
_endDate!.year,
_endDate!.month,
_endDate!.day,
_endTime!.hour,
_endTime!.minute,
);
final startDateTime = DateTime(
date.year,
date.month,
date.day,
time.hour,
time.minute,
);
final endDateTime = _composeDateTime(_endDate!, _endTime!);
final startDateTime = _composeDateTime(date, time);
if (endDateTime.isBefore(startDateTime) ||
endDateTime.isAtSameMomentAs(startDateTime)) {
_endDate = date;
_endTime = time.add(const Duration(hours: 1));
_setEndDateTime(_defaultEndDateTime(startDateTime));
}
}
});
@@ -408,44 +395,47 @@ class _CreateEventSheetState extends State<CreateEventSheet>
_endTime ?? _startTime,
(date, time) {
setState(() {
final startDateTime = DateTime(
_startDate.year,
_startDate.month,
_startDate.day,
_startTime.hour,
_startTime.minute,
);
final endDateTime = DateTime(
date.year,
date.month,
date.day,
time.hour,
time.minute,
);
final startDateTime = _composeDateTime(_startDate, _startTime);
final endDateTime = _composeDateTime(date, time);
if (endDateTime.isBefore(startDateTime) ||
endDateTime.isAtSameMomentAs(startDateTime)) {
_endDate = _startDate;
_endTime = _startTime.add(const Duration(hours: 1));
Toast.show(
context,
context.l10n.calendarCreateInvalidTimeRange,
type: ToastType.error,
);
_setEndDateTime(_defaultEndDateTime(startDateTime));
} else {
_endDate = date;
_endTime = time;
_setEndDateTime(endDateTime);
}
});
},
isOptional: true,
minTime: DateTime(
_startDate.year,
_startDate.month,
_startDate.day,
_startTime.hour,
_startTime.minute,
),
),
],
),
);
}
DateTime _composeDateTime(DateTime date, DateTime time) {
return DateTime(date.year, date.month, date.day, time.hour, time.minute);
}
DateTime _defaultEndDateTime(DateTime startDateTime) {
return startDateTime.add(const Duration(hours: 1));
}
void _setEndDateTime(DateTime value) {
_endDate = DateTime(value.year, value.month, value.day);
_endTime = DateTime(
value.year,
value.month,
value.day,
value.hour,
value.minute,
);
}
Widget _buildAdvancedTab() {
return SingleChildScrollView(
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,