feat(apps/calendar): 新增日历事件创建/编辑/分享功能

This commit is contained in:
zl-q
2026-03-19 00:51:51 +08:00
parent adccecd691
commit 14ccf2cb28
8 changed files with 959 additions and 654 deletions
@@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:lucide_icons/lucide_icons.dart';
import '../../../../core/router/app_routes.dart';
import '../../../home/ui/navigation/home_return_policy.dart';
import '../../../../core/di/injection.dart';
import '../../../../core/theme/design_tokens.dart';
@@ -14,7 +16,6 @@ import '../dayweek/day_event_layout_engine.dart';
import '../dayweek/day_timeline_metrics.dart';
import '../dayweek/day_view_scale.dart';
import '../widgets/bottom_dock.dart';
import '../widgets/create_event_sheet.dart';
class CalendarDayWeekScreen extends StatefulWidget {
final DateTime? initialDate;
@@ -118,7 +119,7 @@ class _CalendarDayWeekScreenState extends State<CalendarDayWeekScreen>
canPop: false,
onPopInvokedWithResult: (didPop, result) {
if (!didPop) {
context.go('/home');
returnToHomePreserveState(context);
}
},
child: SafeArea(
@@ -313,10 +314,8 @@ class _CalendarDayWeekScreenState extends State<CalendarDayWeekScreen>
if (isNotToday) const SizedBox(width: 8),
AppPressable(
borderRadius: BorderRadius.circular(AppRadius.full),
onTap: () => CreateEventSheet.show(
context,
initialDate: _selectedDate,
onSaved: _loadEvents,
onTap: () => context.push(
'${AppRoutes.calendarEventCreate}?date=${formatYmd(_selectedDate)}',
),
child: Container(
width: 36,
@@ -636,7 +635,8 @@ class _CalendarDayWeekScreenState extends State<CalendarDayWeekScreen>
height: tapHeight,
child: GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () => context.push('/calendar/events/${layout.event.id}'),
onTap: () =>
context.push(AppRoutes.calendarEventDetail(layout.event.id)),
child: Stack(
children: [
Positioned(
@@ -696,13 +696,13 @@ class _CalendarDayWeekScreenState extends State<CalendarDayWeekScreen>
activeTab: DockTab.calendar,
onTodoTap: () {
_calendarManager.setViewType(CalendarViewType.day);
context.go('/todo');
context.push(AppRoutes.todoList);
},
onCalendarTap: () {
_calendarManager.setViewType(CalendarViewType.day);
context.go('/calendar/month');
context.push(AppRoutes.calendarMonth);
},
onHomeTap: () => context.go('/home'),
onHomeTap: () => returnToHomePreserveState(context),
);
}
}