Announcements
View school-wide announcements.
Get Announcements
GET /teacher/announcement/get-announcement
{
"data": {
"announcements": [
{
"id": "uuid",
"title": "Exam Schedule Released",
"body": "The mid-term exam schedule has been published...",
"priority": "NORMAL",
"createdAt": "2024-04-01T10:00:00Z",
"createdBy": "Admin"
}
]
}
}
Priority Levels
| Priority | Behavior |
|---|---|
NORMAL | In-app notification only |
URGENT | Triggers SMS + push notification immediately |
UI — Announcement List
class AnnouncementsScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final vm = context.watch<AnnouncementViewModel>();
return ListView.builder(
itemCount: vm.announcements.length,
itemBuilder: (_, i) {
final announcement = vm.announcements[i];
return Card(
child: ListTile(
leading: CircleAvatar(
backgroundColor: announcement.priority == 'URGENT'
? Colors.red.shade100
: Colors.blue.shade100,
child: Icon(
announcement.priority == 'URGENT'
? Icons.warning
: Icons.campaign,
color: announcement.priority == 'URGENT'
? Colors.red
: Colors.blue,
),
),
title: Text(announcement.title),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(announcement.body),
const SizedBox(height: 4),
Text(
'${announcement.createdBy} • ${_formatDate(announcement.createdAt)}',
style: const TextStyle(fontSize: 11, color: Colors.grey),
),
],
),
isThreeLine: true,
),
);
},
);
}
}