Subjects
View assigned subjects and classes.
Get Subjects
GET /teacher/subject/get-subjects
{
"data": {
"subjects": [
{
"subjectId": "uuid",
"subjectName": "Mathematics",
"classes": [
{ "classId": "uuid", "className": "Class 5", "division": "A" },
{ "classId": "uuid", "className": "Class 5", "division": "B" }
]
},
{
"subjectId": "uuid",
"subjectName": "Science",
"classes": [
{ "classId": "uuid", "className": "Class 6", "division": "A" }
]
}
]
}
}
Get Teacher Subjects
GET /teacher/subject/get-teacher-subjects
Returns subjects assigned directly to the current teacher (may overlap with class assignments).
UI — Subject List
class SubjectsScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final vm = context.watch<SubjectViewModel>();
return ListView.builder(
itemCount: vm.subjects.length,
itemBuilder: (_, i) {
final subject = vm.subjects[i];
return Card(
child: ExpansionTile(
title: Text(subject.subjectName, style: const TextStyle(fontWeight: FontWeight.bold)),
children: subject.classes.map<Widget>((c) {
return ListTile(
leading: const Icon(Icons.class_, size: 20),
title: Text('${c.className} - ${c.division}'),
trailing: TextButton(
onPressed: () => Navigator.pushNamed(
'/attendance',
arguments: {'classId': c.classId, 'subject': subject.subjectName},
),
child: const Text('Take Attendance'),
),
);
}).toList(),
),
);
},
);
}
}