// import 'package:flutter/cupertino.dart';
// import 'package:flutter/material.dart';
// import 'package:flutter_bloc/flutter_bloc.dart';
// import 'package:road24_mobile/data/repository/NotificationsRepository.dart';
// import 'package:road24_mobile/data/response/NotificationsResponse.dart';
// import 'package:road24_mobile/model/blocs/notifications/notifications_bloc.dart';
// import 'package:road24_mobile/model/utils/styles/AppColors.dart';
// import 'package:road24_mobile/model/utils/styles/AppStyles.dart';
// import 'package:road24_mobile/utils/frequent_widgets.dart';
// import 'package:road24_mobile/view/built/i18n.dart';
// import 'package:road24_mobile/view/home/dash_board.dart';
// import 'package:road24_mobile/view/mycar/add/inspection/inspection_page.dart';
// import 'package:road24_mobile/view/mycar/fines/fine_details_page.dart';
// import 'package:road24_mobile/view/shimmer/notification_shimmer.dart';
// import 'package:road24_mobile/view/widgets/items/notification_item.dart';
// import 'package:sizer/sizer.dart';

// class Notifications extends StatefulWidget {
//   static List<Results> notifications = [];
//   static int? notificationsCount;
//   static int pageNumber = 1;

//   @override
//   _NotificationsState createState() => _NotificationsState();
// }

// class _NotificationsState extends State<Notifications> {
//   ScrollController _scrollController = ScrollController();
//   late ValueNotifier<bool> takingNext;
//   final listViewKey = PageStorageKey(0);

//   @override
//   void initState() {
//     takingNext = ValueNotifier(true);
//     if (Notifications.notifications.isEmpty) {
//       Notifications.notificationsCount = null;
//     }
//     _loadData();
//     super.initState();
//   }

//   @override
//   void dispose() {
//     Notifications.notifications.clear();
//     Notifications.pageNumber = 1;
//     takingNext.dispose();
//     super.dispose();
//   }

//   _loadData() {
//     Notifications.notifications.clear();
//     DashBoard.notificationsBloc.add(
//       GetNotificationsEvent(
//         page: Notifications.pageNumber,
//         pageSize: 10,
//       ),
//     );
//     _scrollController.addListener(_listener);
//   }

//   void _listener() {
//     try {
//       if (_scrollController.position != null) {
//         if (_scrollController.position.pixels ==
//             _scrollController.position.maxScrollExtent) {
//           Notifications.pageNumber++;
//           if (Notifications.notificationsCount != null) {
//             if (Notifications.notificationsCount! >
//                 Notifications.notifications.length) {
//               DashBoard.notificationsBloc.add(
//                 GetNotificationsEvent(
//                   page: Notifications.pageNumber,
//                   pageSize: 10,
//                 ),
//               );
//             } else {
//               takingNext.value = false;
//             }
//           } else {
//             DashBoard.notificationsBloc.add(
//               GetNotificationsEvent(
//                 page: Notifications.pageNumber,
//                 pageSize: 10,
//               ),
//             );
//           }
//         }
//       }
//     } catch (e) {
//       print(e.toString());
//     }
//   }

//   Future<void> _onRefresh() async {
//     Notifications.pageNumber = 1;
//     Notifications.notifications.clear();
//     Notifications.notificationsCount = null;
//     DashBoard.notificationsBloc.add(GetNotificationsEvent(
//       page: Notifications.pageNumber,
//       pageSize: 10,
//     ));
//   }

//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       backgroundColor: AppColors.appPrimaryColor,
//       appBar: AppBar(
//         toolbarHeight: 60.0,
//         leading: FrequentWidgets.appBarBackButton(context),
//         title: Text(
//           S.of(context).notifications,
//           style: AppStyle.textStyle().copyWith(
//               color: Colors.black, fontWeight: FontWeight.w600, fontSize: 21.0),
//         ),
//       ),
//       body: BlocListener(
//         bloc: DashBoard.notificationsBloc,
//         listener: (context, state) {
//           if (state is GetNotificationsSuccessState) {
//             if (Notifications.notificationsCount == null) {
//               Notifications.notificationsCount = state.response.count;
//             }
//             if (Notifications.notificationsCount! >
//                 Notifications.notifications.length) {
//               for (var notification in state.response.results ?? []) {
//                 print(notification.notificationContent.action);
//                 Notifications.notifications.add(notification);
//               }
//             }
//             if (Notifications.notificationsCount ==
//                 Notifications.notifications.length) {
//               takingNext.value = false;
//             }
//           }
//         },
//         child: BlocBuilder(
//           bloc: DashBoard.notificationsBloc,
//           builder: (context, state) {
//             if (state is NotificationsInitial &&
//                 Notifications.notificationsCount == null) {
//               return Center(child: NotificationShimmer());
//             }
//             if (state is GetNotificationsSuccessState) {
//               if (state.response.results!.isEmpty) {
//                 return RefreshIndicator(
//                   color: Colors.grey,
//                   onRefresh: _onRefresh,
//                   child: SingleChildScrollView(
//                     physics: AlwaysScrollableScrollPhysics(),
//                     child: Container(
//                       constraints: BoxConstraints(minHeight: 80.0.h),
//                       padding: const EdgeInsets.symmetric(horizontal: 16.0),
//                       child: Center(
//                         child: Text(
//                           S.of(context).no_notification,
//                           style: AppStyle.textStyle().copyWith(
//                               color: Color(0xff282828),
//                               fontSize: 24.0,
//                               fontWeight: FontWeight.w600),
//                           maxLines: 2,
//                         ),
//                       ),
//                     ),
//                   ),
//                 );
//               }
//             }
//             print(Notifications.notifications.length);
//             return RefreshIndicator(
//               color: Colors.grey,
//               onRefresh: _onRefresh,
//               child: SingleChildScrollView(
//                 key: listViewKey,
//                 controller: _scrollController,
//                 physics: AlwaysScrollableScrollPhysics(),
//                 child: Container(
//                   constraints: BoxConstraints(
//                     minHeight: 92.0.h - 6.0.w,
//                   ),
//                   child: Column(
//                     children: [
//                       ...List.generate(
//                         Notifications.notifications.length,
//                         (index) => InkWell(
//                           onTap: () async {
//                             print("notification action: " +
//                                 Notifications.notifications[index]
//                                     .notificationContent!.action
//                                     .toString());
//                             if (!Notifications.notifications[index].isRead) {
//                               NotificationRepository()
//                                   .userReadNotification(
//                                       Notifications.notifications[index].id!)
//                                   .then((value) {
//                                 setState(() {
//                                   Notifications.notifications[index].isRead =
//                                       true;
//                                 });
//                                 DashBoard.notificationCount.value--;
//                               });
//                             }
//                             switch (Notifications.notifications[index]
//                                 .notificationContent!.action) {
//                               case NotificationType.PARTIAL_PAID_FINE:

//                               case NotificationType.COMPLETELY_PAID_FINE:
//                               case NotificationType.NEW_FINE:
//                               case NotificationType.PAY_FINE_SUCCESS:
//                               case NotificationType.PAY_FINE_FAILED:
//                               case NotificationType.FINE_DISCOUNT_ENDING:
//                               case NotificationType.FINE_IMAGES_FOUND:
//                                 await Navigator.push(
//                                   context,
//                                   CupertinoPageRoute(
//                                     builder: (context) => FineDetailsPage(
//                                       id: Notifications
//                                           .notifications[index]
//                                           .notificationContent!
//                                           .content!
//                                           .data!
//                                           .objId!,
//                                     ),
//                                   ),
//                                 );
//                                 break;
//                               case NotificationType.REPORT_REVIEWED:
//                                 break;
//                               case NotificationType.OFFENCE_CHANGED_STATUS:
//                                 break;

//                               case NotificationType.INSPECTION_COMING_END:
//                                 var carDetailId = Notifications
//                                     .notifications[index]
//                                     .notificationContent!
//                                     .content!
//                                     .data!
//                                     .carDetailId;

//                                 if (carDetailId != null)
//                                   await Navigator.push(
//                                     context,
//                                     CupertinoPageRoute(
//                                       builder: (context) => InspectionPage(
//                                         carId: carDetailId,
//                                       ),
//                                     ),
//                                   );
//                                 break;
//                               case null:
//                                 break;
//                               default:
//                                 break;
//                             }
//                             // _onRefresh();
//                           },
//                           child: NotificationItem(
//                             notification: Notifications.notifications[index],
//                           ),
//                         ),
//                       ),
//                       SizedBox(height: 10.0),
//                       ValueListenableBuilder(
//                         valueListenable: takingNext,
//                         builder: (context, bool isTaking, _) {
//                           if (isTaking &&
//                               Notifications.notificationsCount != null) {
//                             return Center(
//                               child: CircularProgressIndicator(
//                                 strokeWidth: 3.0,
//                                 valueColor: AlwaysStoppedAnimation<Color>(
//                                   AppColors.unSelectedColor,
//                                 ),
//                               ),
//                             );
//                           } else
//                             return SizedBox();
//                         },
//                       ),
//                       SizedBox(height: 20.0),
//                     ],
//                   ),
//                 ),
//               ),
//             );
//           },
//         ),
//       ),
//     );
//   }
// }
