Files
Traders_Circuit/lib/view/MainScreen/Notification.dart
2024-04-16 19:39:01 +05:30

202 lines
6.0 KiB
Dart

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:traderscircuit/Utils/Common/CommonAppbar.dart';
import 'package:traderscircuit/Utils/Common/sized_box.dart';
import 'package:traderscircuit/Utils/text.dart';
import 'package:traderscircuit/model/Notification/notification_model.dart';
import 'package:traderscircuit/view_model/Notification/notification_api.dart';
class NotificationScreen extends StatefulWidget {
const NotificationScreen({super.key});
@override
State<NotificationScreen> createState() => _NotificationScreenState();
}
class _NotificationScreenState extends State<NotificationScreen> {
StreamController<GetNotification> NotificationController = StreamController();
late Timer timer;
@override
void initState() {
// timer = Timer.periodic(Duration(seconds: 2), (timer) {
NotificationsAPI().notificationList(streamControl: NotificationController);
// });
super.initState();
}
@override
void dispose() {
// TODO: implement dispose
NotificationController.close();
timer.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
appBar: CommonAppbar(titleTxt: ''),
body: StreamBuilder<GetNotification>(
stream: NotificationController.stream,
builder: (ctx, snapshot) {
if (snapshot.data == null) {
return Center(
child: text25W600("No Notification!"),
);
}
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
return Center(
child: Text(
'${snapshot.error} occured',
style: TextStyle(fontSize: 18.spMin),
),
);
}
}
return notificationobj!.data!.list!.isEmpty
? Center(child: _buildNodataBody())
: _buildBody(context);
},
),
);
}
Widget _buildNodataBody() {
return
// Scaffold(
// body:
Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
// Lottie.asset('assets/logos/NoDataFoundLottie.json'),
text25W600(
"No Data Available",
// textAlign: TextAlign.center,
),
],
);
}
// 'assets/images/png/Ellipse 1494.png'
Widget notificationCard({
required String profileimg,
required String title,
required String subtitle,
required String time,
}) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
CircleAvatar(
backgroundImage: NetworkImage(profileimg),
radius: 26.5.r,
),
sizedBoxWidth(12.w),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
text14W400(title),
text12W500_B4B4B4(subtitle),
],
),
],
),
text12W500(time),
],
),
);
}
Widget _buildBody(context) {
return SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(left: 16.w),
child: text25W600('Notifications'),
),
sizedBoxHeight(40.h),
ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: notificationobj!.data!.list!.length,
itemBuilder: (context, index) {
return Column(
children: [
notificationCard(
profileimg: notificationobj!.data!.list!
.elementAt(index)
.notificationImage!,
title: notificationobj!.data!.list!
.elementAt(index)
.notificationMessage!,
subtitle: notificationobj!.data!.list!
.elementAt(index)
.messageName ??
"",
time: notificationobj!.data!.list!
.elementAt(index)
.deliverySchedule ??
""),
if (index != CardList.length - 1)
Container(
height: 1,
margin: EdgeInsets.symmetric(vertical: 20.h),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Color.fromRGBO(176, 176, 176, 0.5),
width: 1,
),
),
),
),
],
);
},
),
sizedBoxHeight(40.h),
],
),
);
}
List<Map<String, String>> CardList = [
{
'profileimg': 'assets/images/png/Ellipse 588.png',
'title': 'Mokshada Kesarkar',
'subtitle': 'Lorem ipsum dolor sit amet cons......',
'time': '1 day ago'
},
{
'profileimg': 'assets/images/png/Ellipse 591.png',
'title': 'Afrid Mulla',
'subtitle': 'Lorem ipsum dolor sit amet cons......',
'time': '1 day ago'
},
{
'profileimg': 'assets/images/png/Ellipse 588.png',
'title': 'Mokshada Kesarkar',
'subtitle': 'Lorem ipsum dolor sit amet cons......',
'time': '2 days ago'
},
{
'profileimg': 'assets/images/png/Ellipse 591.png',
'title': 'Afrid Mulla',
'subtitle': 'Lorem ipsum dolor sit amet cons......',
'time': '3 days ago'
},
];
}