Skip to content

Commit

Permalink
✨ Add option to view, delete and update the events in example.
Browse files Browse the repository at this point in the history
- Migrate example to flutter 3.3.10
  • Loading branch information
PRBaraiya committed Dec 13, 2023
1 parent 6b5a108 commit 85e557e
Show file tree
Hide file tree
Showing 17 changed files with 401 additions and 259 deletions.
1 change: 0 additions & 1 deletion example/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols
Expand Down
22 changes: 5 additions & 17 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@ import 'dart:ui';
import 'package:calendar_view/calendar_view.dart';
import 'package:flutter/material.dart';

import 'model/event.dart';
import 'pages/mobile/mobile_home_page.dart';
import 'pages/web/web_home_page.dart';
import 'widgets/responsive_widget.dart';
import 'pages/home_page.dart';

DateTime get _now => DateTime.now();

Expand All @@ -18,8 +15,8 @@ class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return CalendarControllerProvider<Event>(
controller: EventController<Event>()..addAll(_events),
return CalendarControllerProvider(
controller: EventController()..addAll(_events),
child: MaterialApp(
title: 'Flutter Calendar Page Demo',
debugShowCheckedModeBanner: false,
Expand All @@ -31,19 +28,15 @@ class MyApp extends StatelessWidget {
PointerDeviceKind.touch,
},
),
home: ResponsiveWidget(
mobileWidget: MobileHomePage(),
webWidget: WebHomePage(),
),
home: HomePage(),
),
);
}
}

List<CalendarEventData<Event>> _events = [
List<CalendarEventData> _events = [
CalendarEventData(
date: _now,
event: Event(title: "Joe's Birthday"),
title: "Project meeting",
description: "Today is project meeting.",
startTime: DateTime(_now.year, _now.month, _now.day, 18, 30),
Expand All @@ -53,15 +46,13 @@ List<CalendarEventData<Event>> _events = [
date: _now.add(Duration(days: 1)),
startTime: DateTime(_now.year, _now.month, _now.day, 18),
endTime: DateTime(_now.year, _now.month, _now.day, 19),
event: Event(title: "Wedding anniversary"),
title: "Wedding anniversary",
description: "Attend uncle's wedding anniversary.",
),
CalendarEventData(
date: _now,
startTime: DateTime(_now.year, _now.month, _now.day, 14),
endTime: DateTime(_now.year, _now.month, _now.day, 17),
event: Event(title: "Football Tournament"),
title: "Football Tournament",
description: "Go to football tournament.",
),
Expand All @@ -71,7 +62,6 @@ List<CalendarEventData<Event>> _events = [
_now.add(Duration(days: 3)).month, _now.add(Duration(days: 3)).day, 10),
endTime: DateTime(_now.add(Duration(days: 3)).year,
_now.add(Duration(days: 3)).month, _now.add(Duration(days: 3)).day, 14),
event: Event(title: "Sprint Meeting."),
title: "Sprint Meeting.",
description: "Last day of project submission for last year.",
),
Expand All @@ -87,7 +77,6 @@ List<CalendarEventData<Event>> _events = [
_now.subtract(Duration(days: 2)).month,
_now.subtract(Duration(days: 2)).day,
16),
event: Event(title: "Team Meeting"),
title: "Team Meeting",
description: "Team Meeting",
),
Expand All @@ -103,7 +92,6 @@ List<CalendarEventData<Event>> _events = [
_now.subtract(Duration(days: 2)).month,
_now.subtract(Duration(days: 2)).day,
12),
event: Event(title: "Chemistry Viva"),
title: "Chemistry Viva",
description: "Today is Joe's birthday.",
),
Expand Down
17 changes: 0 additions & 17 deletions example/lib/model/event.dart

This file was deleted.

42 changes: 19 additions & 23 deletions example/lib/pages/create_event_page.dart
Original file line number Diff line number Diff line change
@@ -1,29 +1,14 @@
import 'package:calendar_view/calendar_view.dart';
import 'package:flutter/material.dart';

import '../app_colors.dart';
import '../extension.dart';
import '../widgets/add_event_widget.dart';
import '../widgets/add_event_form.dart';

class CreateEventPage extends StatefulWidget {
final bool withDuration;
class CreateEventPage extends StatelessWidget {
const CreateEventPage({super.key, this.event});

const CreateEventPage({Key? key, this.withDuration = false})
: super(key: key);

@override
_CreateEventPageState createState() => _CreateEventPageState();
}

class _CreateEventPageState extends State<CreateEventPage> {
@override
void initState() {
super.initState();
}

@override
void dispose() {
super.dispose();
}
final CalendarEventData? event;

@override
Widget build(BuildContext context) {
Expand All @@ -40,7 +25,7 @@ class _CreateEventPageState extends State<CreateEventPage> {
),
),
title: Text(
"Create New Event",
event == null ? "Create New Event" : "Update Event",
style: TextStyle(
color: AppColors.black,
fontSize: 20.0,
Expand All @@ -52,8 +37,19 @@ class _CreateEventPageState extends State<CreateEventPage> {
physics: ClampingScrollPhysics(),
child: Padding(
padding: EdgeInsets.all(20.0),
child: AddEventWidget(
onEventAdd: context.pop,
child: AddOrEditEventForm(
onEventAdd: (newEvent) {
if (this.event != null) {
CalendarControllerProvider.of(context)
.controller
.updateEvent(this.event!, newEvent);
} else {
CalendarControllerProvider.of(context).controller.add(newEvent);
}

context.pop(true);
},
event: event,
),
),
),
Expand Down
29 changes: 14 additions & 15 deletions example/lib/pages/day_view_page.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import 'package:calendar_view/calendar_view.dart';
import 'package:example/enumerations.dart';
import 'package:flutter/material.dart';

import '../extension.dart';
import '../model/event.dart';
import '../widgets/day_view_widget.dart';
import '../widgets/responsive_widget.dart';
import 'create_event_page.dart';
import 'web/web_home_page.dart';

class DayViewPageDemo extends StatefulWidget {
const DayViewPageDemo({Key? key}) : super(key: key);
Expand All @@ -16,20 +17,18 @@ class DayViewPageDemo extends StatefulWidget {
class _DayViewPageDemoState extends State<DayViewPageDemo> {
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
elevation: 8,
onPressed: () async {
final event =
await context.pushRoute<CalendarEventData<Event>>(CreateEventPage(
withDuration: true,
));
if (event == null) return;
CalendarControllerProvider.of<Event>(context).controller.add(event);
},
return ResponsiveWidget(
webWidget: WebHomePage(
selectedView: CalendarView.day,
),
mobileWidget: Scaffold(
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
elevation: 8,
onPressed: () => context.pushRoute(CreateEventPage()),
),
body: DayViewWidget(),
),
body: DayViewWidget(),
);
}
}
42 changes: 39 additions & 3 deletions example/lib/pages/event_details_page.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:calendar_view/calendar_view.dart';
import 'package:example/pages/create_event_page.dart';
import 'package:flutter/material.dart';

import '../extension.dart';
Expand Down Expand Up @@ -76,14 +77,49 @@ class DetailsPage extends StatelessWidget {
height: 30.0,
),
],
if (event.description != "") ...[
if (event.description?.isNotEmpty ?? false) ...[
Divider(),
Text("Description"),
SizedBox(
height: 10.0,
),
Text(event.description),
]
Text(event.description!),
],
const SizedBox(height: 50),
Row(
children: [
Expanded(
child: ElevatedButton(
onPressed: () {
CalendarControllerProvider.of(context)
.controller
.remove(event);
Navigator.of(context).pop();
},
child: Text('Delete Event'),
),
),
SizedBox(width: 30),
Expanded(
child: ElevatedButton(
onPressed: () async {
final result = await Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => CreateEventPage(
event: event,
),
),
);

if (result) {
Navigator.of(context).pop();
}
},
child: Text('Edit Event'),
),
),
],
),
],
),
);
Expand Down
17 changes: 17 additions & 0 deletions example/lib/pages/home_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import 'package:flutter/material.dart';

import '../widgets/responsive_widget.dart';
import 'mobile/mobile_home_page.dart';
import 'web/web_home_page.dart';

class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return ResponsiveWidget(
mobileWidget: MobileHomePage(),
webWidget: WebHomePage(),
);
}
}
30 changes: 13 additions & 17 deletions example/lib/pages/month_view_page.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import 'package:calendar_view/calendar_view.dart';
import 'package:flutter/material.dart';

import '../enumerations.dart';
import '../extension.dart';
import '../model/event.dart';
import '../widgets/month_view_widget.dart';
import '../widgets/responsive_widget.dart';
import 'create_event_page.dart';
import 'web/web_home_page.dart';

class MonthViewPageDemo extends StatefulWidget {
const MonthViewPageDemo({
Expand All @@ -18,23 +19,18 @@ class MonthViewPageDemo extends StatefulWidget {
class _MonthViewPageDemoState extends State<MonthViewPageDemo> {
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
elevation: 8,
onPressed: _addEvent,
return ResponsiveWidget(
webWidget: WebHomePage(
selectedView: CalendarView.month,
),
body: MonthViewWidget(),
);
}

Future<void> _addEvent() async {
final event = await context.pushRoute<CalendarEventData<Event>>(
CreateEventPage(
withDuration: true,
mobileWidget: Scaffold(
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
elevation: 8,
onPressed: () => context.pushRoute(CreateEventPage()),
),
body: MonthViewWidget(),
),
);
if (event == null) return;
CalendarControllerProvider.of<Event>(context).controller.add(event);
}
}
8 changes: 7 additions & 1 deletion example/lib/pages/web/web_home_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,18 @@ import '../../widgets/calendar_configs.dart';
import '../../widgets/calendar_views.dart';

class WebHomePage extends StatefulWidget {
WebHomePage({
this.selectedView = CalendarView.month,
});

final CalendarView selectedView;

@override
_WebHomePageState createState() => _WebHomePageState();
}

class _WebHomePageState extends State<WebHomePage> {
CalendarView _selectedView = CalendarView.month;
late var _selectedView = widget.selectedView;

void _setView(CalendarView view) {
if (view != _selectedView && mounted) {
Expand Down
Loading

0 comments on commit 85e557e

Please sign in to comment.