import 'package:flutter/material.dart'; import 'package:marianum_mobile/widget/loadingPacket.dart'; import 'package:provider/provider.dart'; import 'package:timetable_view/timetable_view.dart'; import '../../../dataOld/incommingPackets/timetablePacket.dart'; class TimetableOld extends StatefulWidget { const TimetableOld({Key? key}) : super(key: key); @override State createState() => _TimetableOldState(); } class _TimetableOldState extends State { @override void initState() { Provider.of(context, listen: false).invoke(); super.initState(); } @override Widget build(BuildContext context) { return Consumer( builder: (context, data, child) { return LoadingPacket(packet: data, child: TimetableView( laneEventsList: _buildLaneEvents(context, data), onEventTap: (TableEvent event) {}, timetableStyle: CustomTableStyle(context), onEmptySlotTap: (int laneIndex, TableEventTime start, TableEventTime end) => {}, )); }, ); } List _buildLaneEvents(context, TimetablePacket data) { List laneEvents = List.empty(growable: true); for (var day in data.timeTable.days) { List tableEvents = List.empty(growable: true); for (var element in day.entries) { tableEvents.add( TableEvent( backgroundColor: Theme.of(context).primaryColor, padding: const EdgeInsets.all(5), title: element.subject, location: "\n${element.room}", eventId: tableEvents.length, laneIndex: tableEvents.length, startTime: TableEventTime(hour: element.start.hour, minute: element.start.minute), endTime: TableEventTime(hour: element.end.hour, minute: element.end.minute) ) ); } laneEvents.add( LaneEvents( lane: Lane(laneIndex: laneEvents.length, name: day.name, textStyle: TextStyle(color: Theme.of(context).primaryColor, fontWeight: FontWeight.bold)), events: tableEvents ) ); } return laneEvents; } void onEventTapCallBack(TableEvent event) { print( "Event Clicked!! LaneIndex ${event.laneIndex} Title: ${event.title} StartHour: ${event.startTime.hour} EndHour: ${event.endTime.hour}"); } void onTimeSlotTappedCallBack( int laneIndex, TableEventTime start, TableEventTime end) { print( "Empty Slot Clicked !! LaneIndex: $laneIndex StartHour: ${start.hour} EndHour: ${end.hour}"); } } class CustomTableStyle extends TimetableStyle { dynamic context; CustomTableStyle(context) { this.context = context; } @override int get startHour => 07; @override int get endHour => 17; @override double get laneWidth => 200; @override Color get cornerColor => Theme.of(context).primaryColor; @override Color get timeItemTextColor => Theme.of(context).primaryColor; @override // TODO: implement timeItemHeight double get timeItemHeight => 60; }