Students
View student list per class.
Get All Students (by Class)
GET /teacher/classes/get-all-students?classId={uuid}&divisionId={uuid}
{
"data": {
"classId": "uuid",
"divisionId": "uuid",
"className": "Class 5-A",
"students": [
{
"id": "uuid",
"name": "John Doe",
"rollNo": "1",
"admissionNo": "SCH001",
"photoUrl": "https://cdn.syncad.in/students/uuid.jpg",
"parentPhone": "+919876543210"
}
]
}
}
Get Students List (Common)
GET /teacher/common/students/{classId}
UI — Student List
class StudentListScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final vm = context.watch<StudentViewModel>();
return Scaffold(
appBar: AppBar(
title: Text(vm.className),
actions: [
IconButton(
icon: const Icon(Icons.search),
onPressed: () => _showSearch(vm),
),
],
),
body: ListView.builder(
itemCount: vm.students.length,
itemBuilder: (_, i) {
final student = vm.students[i];
return Card(
child: ListTile(
leading: CircleAvatar(
backgroundImage: student.photoUrl != null
? NetworkImage(student.photoUrl!)
: null,
child: student.photoUrl == null
? const Icon(Icons.person)
: null,
),
title: Text(student.name),
subtitle: Text('Roll No: ${student.rollNo} • Adm No: ${student.admissionNo}'),
trailing: PopupMenuButton(
itemBuilder: (_) => [
const PopupMenuItem(value: 'attendance', child: Text('Mark Attendance')),
const PopupMenuItem(value: 'result', child: Text('Enter Result')),
const PopupMenuItem(value: 'profile', child: Text('View Profile')),
],
onSelected: (action) {
switch (action) {
case 'attendance':
Navigator.pushNamed('/attendance', arguments: {'studentId': student.id});
break;
case 'result':
Navigator.pushNamed('/results/enter', arguments: {'studentId': student.id});
break;
}
},
),
),
);
},
),
);
}
}