Fixed timetable colors updating periodic

This commit is contained in:
Elias Müller 2023-09-17 16:07:00 +02:00
parent a237fba482
commit 7b18fed51d
2 changed files with 17 additions and 5 deletions

@ -69,7 +69,7 @@ class AppointmentDetails {
),
ListTile(
leading: const Icon(Icons.room),
title: Text("Raum: ${room.name}"),
title: Text("Raum: ${room.name} (${room.longName})"),
trailing: IconButton(
icon: const Icon(Icons.house_outlined),
onPressed: () {
@ -79,7 +79,7 @@ class AppointmentDetails {
),
ListTile(
leading: const Icon(Icons.person),
title: Text("Lehrkraft: (${timetableData.te[0].name}) ${timetableData.te[0].longname}"),
title: Text("Lehrkraft: ${timetableData.te[0].name} (${timetableData.te[0].longname})"),
trailing: Visibility(
visible: !kReleaseMode,
child: IconButton(

@ -1,4 +1,6 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
@ -25,6 +27,7 @@ class Timetable extends StatefulWidget {
class _TimetableState extends State<Timetable> {
CalendarController controller = CalendarController();
late Timer updateTimings;
double elementScale = 40;
double baseElementScale = 40;
@ -42,6 +45,8 @@ class _TimetableState extends State<Timetable> {
controller.displayDate = DateTime.now().add(const Duration(days: 2));
updateTimings = Timer.periodic(const Duration(seconds: 30), (Timer t) => setState((){}));
super.initState();
}
@ -70,6 +75,7 @@ class _TimetableState extends State<Timetable> {
button: TextButton(
child: const Text("Neu laden"),
onPressed: () {
controller.displayDate = DateTime.now().add(const Duration(days: 2));
Provider.of<TimetableProps>(context, listen: false).resetWeek();
},
),
@ -142,6 +148,12 @@ class _TimetableState extends State<Timetable> {
);
}
@override
void dispose() {
updateTimings.cancel();
super.dispose();
}
List<TimeRegion> _buildSpecialTimeRegions(GetHolidaysResponse holidays, ) {
DateTime lastMonday = DateTime.now().subtract(Duration(days: DateTime.now().weekday - 1));
DateTime firstBreak = lastMonday.copyWith(hour: 10, minute: 15);
@ -201,7 +213,7 @@ class _TimetableState extends State<Timetable> {
endTime: endTime,
subject: subjects.result.firstWhere((subject) => subject.id == element.su[0].id).name,
location: ""
"${rooms.result.firstWhere((room) => room.id == element.ro[0].id).name}"
"${rooms.result.firstWhere((room) => room.id == element.ro[0].id).name})"
"\n"
"${element.te.first.longname}",
notes: element.activityType,
@ -245,10 +257,10 @@ class _TimetableState extends State<Timetable> {
if(endTime.isBefore(DateTime.now())) return Theme.of(context).primaryColor.withAlpha(alpha);
// Event takes currently place
if(endTime.isAfter(DateTime.now()) && startTime.isBefore(DateTime.now())) return Theme.of(context).primaryColor.withRed(100);
if(endTime.isAfter(DateTime.now()) && startTime.isBefore(DateTime.now())) return Theme.of(context).primaryColor.withRed(200);
// Fallback
return Theme.of(context).primaryColor;
return Theme.of(context).primaryColor.withAlpha(alpha);
}
bool _isCrossedOut(CalendarAppointmentDetails calendarEntry) {