11import 'package:calendar_view/calendar_view.dart' ;
2+ import 'package:example/widgets/delete_event_dialog.dart' ;
23import 'package:flutter/material.dart' ;
34
45import '../extension.dart' ;
56import 'create_event_page.dart' ;
67
78class DetailsPage extends StatelessWidget {
89 final CalendarEventData event;
10+ final DateTime date;
11+
12+ const DetailsPage ({
13+ required this .event,
14+ required this .date,
15+ super .key,
16+ });
917
10- const DetailsPage ({super .key, required this .event});
1118 @override
1219 Widget build (BuildContext context) {
1320 return Scaffold (
@@ -83,17 +90,15 @@ class DetailsPage extends StatelessWidget {
8390 SizedBox (
8491 height: 10.0 ,
8592 ),
86- Text (event.description! ),
93+ Text (event.description! )
8794 ],
8895 const SizedBox (height: 50 ),
8996 Row (
9097 children: [
9198 Expanded (
9299 child: ElevatedButton (
93- onPressed: () {
94- CalendarControllerProvider .of (context)
95- .controller
96- .remove (event);
100+ onPressed: () async {
101+ await _handleDeleteEvent (context);
97102 Navigator .of (context).pop ();
98103 },
99104 child: Text ('Delete Event' ),
@@ -111,7 +116,7 @@ class DetailsPage extends StatelessWidget {
111116 ),
112117 );
113118
114- if (result) {
119+ if (result != null ) {
115120 Navigator .of (context).pop ();
116121 }
117122 },
@@ -124,4 +129,33 @@ class DetailsPage extends StatelessWidget {
124129 ),
125130 );
126131 }
132+
133+ /// Handles the deletion of an event, showing a dialog for repeating events.
134+ ///
135+ /// This method checks if the event is a repeating event. If it is, it shows
136+ /// a dialog to the user to choose the deletion type (e.g., delete this
137+ /// event, delete following events, delete all events).
138+ /// If the event is not repeating, it defaults to deleting all occurrences
139+ /// of the event.
140+ Future <void > _handleDeleteEvent (BuildContext context) async {
141+ DeleteEvent ? result;
142+ final isRepeatingEvent = event.recurrenceSettings != null &&
143+ (event.recurrenceSettings? .frequency != RepeatFrequency .doNotRepeat);
144+
145+ if (isRepeatingEvent) {
146+ result = await showDialog (
147+ context: context,
148+ builder: (_) => DeleteEventDialog (),
149+ );
150+ } else {
151+ result = DeleteEvent .all;
152+ }
153+ if (result != null ) {
154+ CalendarControllerProvider .of (context).controller.deleteRecurrenceEvent (
155+ date: date,
156+ event: event,
157+ deleteEventType: result,
158+ );
159+ }
160+ }
127161}
0 commit comments