import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/notification/firebase_notification_manger.dart'; import 'package:test_sa/controllers/providers/api/notifications_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/system_notification_model.dart'; import 'package:test_sa/views/pages/user/notifications/widgets/notification_card_redesigned.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; class NotificationsList extends StatelessWidget { final List notifications; final bool nextPage; final Future Function() onLazyLoad; const NotificationsList({Key? key, this.notifications = const [], required this.nextPage, required this.onLazyLoad}) : super(key: key); @override Widget build(BuildContext context) { if (notifications.isEmpty) { return NoDataFound(message: context.translation.notificationsNotFound).center; } return LazyLoading( nextPage: nextPage, onLazyLoad: onLazyLoad, child: ListView.separated( itemCount: notifications.length, separatorBuilder: (context, itemIndex) => 12.height, itemBuilder: (context, itemIndex) { final notification = notifications[itemIndex]; return NotificationCardRedesigned( notification: notification, onTap: () async { if (notification.id != null && !(notification.readed ?? false)) { final provider = Provider.of(context, listen: false); await provider.markOneAsRead(notificationId: notification.id!); } FirebaseNotificationManger.handleMessage(context, notification.toNotificationJson()); }, ); }, ), ); } }