diff --git a/lib/new_ui/screens/AnnouncementScreen/announcementmodel.dart b/lib/new_ui/screens/AnnouncementScreen/announcementmodel.dart index 4a78aab..333f009 100644 --- a/lib/new_ui/screens/AnnouncementScreen/announcementmodel.dart +++ b/lib/new_ui/screens/AnnouncementScreen/announcementmodel.dart @@ -3,29 +3,35 @@ import 'package:cloud_firestore/cloud_firestore.dart'; class AnnouncementModel { Timestamp? startDate; Timestamp? endDate; + String? content; String? div; String? branch; String? batch; String? docURL; String? title; + String? gradYear; AnnouncementModel( {this.startDate, + this.content, this.endDate, this.div, this.branch, this.batch, this.docURL, + this.gradYear, this.title}); AnnouncementModel.fromJson(Map json) { startDate = json['startDate']; + content = json['content']; endDate = json['endDate']; div = json['div']; branch = json['branch']; batch = json['batch']; docURL = json['docURL']; title = json['title']; + gradYear = json["gradYear"]; } Map toJson() { @@ -33,10 +39,12 @@ class AnnouncementModel { data['startDate'] = this.startDate; data['endDate'] = this.endDate; data['div'] = this.div; + data['content'] = this.content; data['branch'] = this.branch; data['batch'] = this.batch; data['docURL'] = this.docURL; data['title'] = this.title; + data['gradYear'] = this.gradYear; return data; } } \ No newline at end of file diff --git a/lib/new_ui/screens/AnnouncementScreen/announcementscreen.dart b/lib/new_ui/screens/AnnouncementScreen/announcementscreen.dart index ebcd217..561d083 100644 --- a/lib/new_ui/screens/AnnouncementScreen/announcementscreen.dart +++ b/lib/new_ui/screens/AnnouncementScreen/announcementscreen.dart @@ -1,6 +1,7 @@ import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.dart'; - +import 'package:tsec_app/new_ui/colors.dart'; +import 'package:url_launcher/url_launcher.dart'; // import '../models/announcement_model/announcement_model.dart'; import 'announcementmodel.dart'; @@ -10,6 +11,13 @@ class AnnouncementScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( + appBar: AppBar( + backgroundColor: Colors.transparent, + foregroundColor: Colors.white, + centerTitle: true, + titleTextStyle: TextStyle(fontSize: 20), + title: Text("Announcements"), + ), body: NestedScrollView( headerSliverBuilder: (context, innerBoxIsScrolled) => [ SliverToBoxAdapter( @@ -39,11 +47,7 @@ class AnnouncementScreen extends StatelessWidget { final data = snapshot.data!.data() as Map?; final List announcementsData = data?['content'] ?? []; - print("in announcement screen ppppppppppppppppppppppppppppppppppppppp"); - print(data); - final announcements = announcementsData.map((json) => AnnouncementModel.fromJson(json)).toList(); - return ListView.builder( itemCount: announcements.length, itemBuilder: (context, index) { @@ -59,7 +63,7 @@ class AnnouncementScreen extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - _buildDateHeader(_parseTimestamp(announcement.startDate)), + //_buildDateHeader(_parseTimestamp(announcement.startDate)), listTile, ], ); @@ -85,7 +89,7 @@ class AnnouncementScreen extends StatelessWidget { Widget _buildDateHeader(DateTime date) { // Customize this method to build your date header return Container( - padding: EdgeInsets.all(8.0), + padding: EdgeInsets.symmetric(horizontal: 8.0), color: Colors.grey, child: Text( "${date.toLocal()}".split(' ')[0], // Display the date in a readable format @@ -102,12 +106,54 @@ class AnnouncementListItem extends StatelessWidget { @override Widget build(BuildContext context) { - return ListTile( - title: Text(announcementModel.title ?? "No Title"), - subtitle: Text(announcementModel.docURL ?? "No URL"), - // Add other fields as needed + Size size = MediaQuery.of(context).size; + if(announcementModel.docURL == null || announcementModel.startDate==null || announcementModel.endDate==null){ + return const SizedBox(); + } + DateTime startDate = announcementModel.startDate!.toDate(); + DateTime endDate = announcementModel.endDate!.toDate(); + return Container( + margin: EdgeInsets.symmetric(horizontal: 10), + decoration: BoxDecoration( + color: timePickerBg, + ), + child: Card( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 11.0,vertical: 8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(announcementModel.title.toString(),style: TextStyle(fontSize: 22,fontWeight: FontWeight.w500),), + SizedBox(height: 5), + if(announcementModel.content != null) + Text(announcementModel.content.toString()), + /*Row( + children: [ + Text("From :- ${getDateString(startDate)}"), + Spacer(), + Text("Till :- ${getDateString(endDate)}"), + ], + ),*/ + SizedBox(height: 5), + InkWell(splashFactory: NoSplash.splashFactory,onTap: ()=>launchUrl(Uri.parse(announcementModel.docURL.toString(),),),child: Row( + children: [ + Icon(Icons.link), + SizedBox( + width: 10, + ), + Text("Check out this Link",style: TextStyle(color: Colors.blue,decoration: TextDecoration.underline),), + ], + ),), + ], + ), + ), + ), ); } + + String getDateString(DateTime date){ + return "${date.day}/${date.month}/${date.year}"; + } } extension DateTimeExtensions on DateTime { diff --git a/pubspec.lock b/pubspec.lock index e98af4d..48f2667 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -792,6 +792,30 @@ packages: url: "https://pub.dev" source: hosted version: "6.8.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.dev" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + url: "https://pub.dev" + source: hosted + version: "2.0.1" linkify: dependency: transitive description: @@ -828,26 +852,26 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" mime: dependency: transitive description: @@ -884,10 +908,10 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_provider: dependency: "direct main" description: @@ -1365,6 +1389,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + url: "https://pub.dev" + source: hosted + version: "13.0.0" watcher: dependency: transitive description: