From 7b18fed51d53e87525742cc53ed8f5e5194024a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sun, 17 Sep 2023 16:07:00 +0200 Subject: [PATCH] Fixed timetable colors updating periodic --- .../pages/timetable/appointmentDetails.dart | 4 ++-- lib/view/pages/timetable/timetable.dart | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/view/pages/timetable/appointmentDetails.dart b/lib/view/pages/timetable/appointmentDetails.dart index e56cc33..53a2754 100644 --- a/lib/view/pages/timetable/appointmentDetails.dart +++ b/lib/view/pages/timetable/appointmentDetails.dart @@ -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( diff --git a/lib/view/pages/timetable/timetable.dart b/lib/view/pages/timetable/timetable.dart index 6556593..d1ad3db 100644 --- a/lib/view/pages/timetable/timetable.dart +++ b/lib/view/pages/timetable/timetable.dart @@ -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 { CalendarController controller = CalendarController(); + late Timer updateTimings; double elementScale = 40; double baseElementScale = 40; @@ -42,6 +45,8 @@ class _TimetableState extends State { 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 { button: TextButton( child: const Text("Neu laden"), onPressed: () { + controller.displayDate = DateTime.now().add(const Duration(days: 2)); Provider.of(context, listen: false).resetWeek(); }, ), @@ -142,6 +148,12 @@ class _TimetableState extends State { ); } + @override + void dispose() { + updateTimings.cancel(); + super.dispose(); + } + List _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 { 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 { 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) {