tm-android-app/lib/screens/announcement_screen.dart
2024-10-16 10:12:17 +05:30

94 lines
3.2 KiB
Dart

import 'package:cheminova/provider/notification_provider.dart';
import 'package:cheminova/utils/string_extension.dart';
import 'package:cheminova/widgets/common_app_bar.dart';
import 'package:cheminova/widgets/common_background.dart';
import 'package:cheminova/widgets/common_drawer.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
class AnnouncementScreen extends StatefulWidget {
const AnnouncementScreen({super.key});
@override
State<AnnouncementScreen> createState() => _AnnouncementScreenState();
}
class _AnnouncementScreenState extends State<AnnouncementScreen> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
context.read<NotificationProvider>().getAnnouncement();
});
}
@override
Widget build(BuildContext context) {
final notificationProvider = context.watch<NotificationProvider>();
return CommonBackground(
child: Scaffold(
backgroundColor: Colors.transparent,
appBar: CommonAppBar(
actions: [
IconButton(
onPressed: () {
Navigator.pop(context);
},
icon: Image.asset('assets/Back_attendance.png'),
padding: const EdgeInsets.only(right: 20),
),
],
title: const Text('Announcement',
style: TextStyle(
fontSize: 20,
color: Colors.black,
fontWeight: FontWeight.w400,
fontFamily: 'Anek')),
backgroundColor: Colors.transparent,
elevation: 0,
),
drawer: const CommonDrawer(),
body: Stack(
children: [
ListView.builder(
itemCount: notificationProvider.announcementList.length,
itemBuilder: (context, index) {
return Container(
margin: const EdgeInsets.only(
bottom: 10,
left: 10,
right: 10,
),
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(10))),
child: ListTile(
title: const Text('Message:'),
subtitle: Text(
'${notificationProvider.announcementList[index].message.capitalize()}\nDate: ${DateFormat("dd/MM/yyyy").format(
DateTime.parse(notificationProvider
.announcementList[index].date),
)}',
),
),
);
}),
if (notificationProvider.isLoading)
Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.2),
),
child: const Center(
child: CircularProgressIndicator(),
),
),
],
),
),
);
}
}