Skip to content

Commit

Permalink
updated calendar screen
Browse files Browse the repository at this point in the history
  • Loading branch information
ManuelSena19 committed Oct 15, 2023
1 parent 9901351 commit 8e35e1b
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 2 deletions.
83 changes: 82 additions & 1 deletion lib/screens/calendar_screen.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:health_watch/constants/push_routes.dart';
import 'package:health_watch/constants/routes.dart';
import 'package:health_watch/utilities/appbar_widget.dart';
import 'package:health_watch/utilities/drawer_widget.dart';
import 'package:table_calendar/table_calendar.dart';
import '../constants/user_data.dart';

class CalendarScreen extends StatefulWidget {
const CalendarScreen({super.key});
Expand All @@ -8,8 +16,81 @@ class CalendarScreen extends StatefulWidget {
}

class _CalendarScreenState extends State<CalendarScreen> {
final email = FirebaseAuth.instance.currentUser!.email.toString();
List _appointments = [];
List _appointmentDates = [];

Future<List<Map<String, dynamic>>?> getAppointmentsData(String name) async {
List<DocumentSnapshot> appointmentSnapshots = await getAppointments(name);

List<Map<String, dynamic>> appointmentsData =
appointmentSnapshots.map((snapshot) {
return snapshot.data() as Map<String, dynamic>;
}).toList();
return appointmentsData;
}

Future<void> setAppointments() async {
List? appointments = await getAppointmentsData(email);
setState(() {
_appointments = appointments ?? [];
});
List dates = [];
Timestamp timestamp = Timestamp(0, 0);
if (_appointments.isNotEmpty) {
for (final appointment in _appointments) {
timestamp = appointment['date'];
dates.add(timestamp.toDate());
}
setState(() {
_appointmentDates = dates;
});
} else {
const AlertDialog(
title: Text('An error has occurred'),
content: Text('No dates'),
);
}
}

@override
void initState() {
setAppointments();
super.initState();
}

@override
Widget build(BuildContext context) {
return const Placeholder();
return Scaffold(
appBar: appbarWidget('Calendar'),
drawer: drawerWidget(context),
body: ListView(
children: [
Builder(builder: (context) {
if (_appointments.isEmpty) {
return TableCalendar(
focusedDay: DateTime.now(),
firstDay: DateTime.now(),
lastDay: DateTime.utc(2030),
);
} else {
return TableCalendar(
focusedDay: DateTime.now(),
firstDay: DateTime.now(),
lastDay: DateTime.utc(2030),
selectedDayPredicate: (day) => _appointmentDates.contains(day),
);
}
}),
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {
pushRoute(context, searchRoute);
},
elevation: 0,
child: const Icon(Icons.add_business_outlined),
),
);
}
}
2 changes: 1 addition & 1 deletion lib/screens/register_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ class _RegisterScreenState extends State<RegisterScreen> {
'day': day,
'month': month,
'year': year,
'height': weight,
'height': height,
'weight': weight,
'bmi': bmi,
'bloodGroup': bloodGroup,
Expand Down

0 comments on commit 8e35e1b

Please sign in to comment.