Skip to main content

Timetable

Get Timetable

GET /parent/student/get-timetable-details?studentId={id}
{
"data": {
"weekdays": {
"MONDAY": [
{ "period": 1, "subject": "Mathematics", "teacherName": "Mr. R. Kumar", "startTime": "08:00", "endTime": "08:45" },
{ "period": 2, "subject": "English", "teacherName": "Ms. P. Sharma", "startTime": "08:45", "endTime": "09:30" }
],
"TUESDAY": [...],
...
}
}
}

UI — Weekly Timetable

class TimetableScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final timetableVM = context.watch<TimetableViewModel>();

return DefaultTabController(
length: 5, // Mon-Fri
child: Scaffold(
appBar: const TabBar(
tabs: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'].map((d) => Tab(text: d)).toList(),
),
body: TabBarView(
children: [
_DayTimetable(periods: timetableVM.getPeriodsFor('MONDAY')),
_DayTimetable(periods: timetableVM.getPeriodsFor('TUESDAY')),
_DayTimetable(periods: timetableVM.getPeriodsFor('WEDNESDAY')),
_DayTimetable(periods: timetableVM.getPeriodsFor('THURSDAY')),
_DayTimetable(periods: timetableVM.getPeriodsFor('FRIDAY')),
],
),
),
);
}
}

class _DayTimetable extends StatelessWidget {
final List<Period> periods;

@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: periods.length,
itemBuilder: (_, i) {
final period = periods[i];
return ListTile(
leading: CircleAvatar(child: Text('${i + 1}')),
title: Text(period.subject),
subtitle: Text('${period.startTime} - ${period.endTime} • ${period.teacherName}'),
);
},
);
}
}