// lib/features/notifications/widgets/notification_panel.dart import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../providers/notification_provider.dart'; import 'notification_tile.dart'; class NotificationPanel extends StatelessWidget { const NotificationPanel({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return DraggableScrollableSheet( expand: false, initialChildSize: 0.6, minChildSize: 0.35, maxChildSize: 0.95, builder: (context, scrollController) { return Container( decoration: const BoxDecoration( color: Colors.white, borderRadius: BorderRadius.vertical(top: Radius.circular(24)), ), child: Column( children: [ // Handle bar Center( child: Container( margin: const EdgeInsets.only(top: 12, bottom: 8), width: 48, height: 5, decoration: BoxDecoration( color: Colors.grey.shade300, borderRadius: BorderRadius.circular(3), ), ), ), // Header Padding( padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const Text('Notifications', style: TextStyle(fontSize: 20, fontWeight: FontWeight.w700)), Consumer( builder: (_, provider, __) { if (provider.unreadCount == 0) return const SizedBox.shrink(); return TextButton( onPressed: provider.markAllAsRead, child: const Text('Mark all read', style: TextStyle(fontSize: 13)), ); }, ), ], ), ), const Divider(height: 1), // List Expanded( child: Consumer( builder: (_, provider, __) { if (provider.loading) { return const Center(child: CircularProgressIndicator()); } if (provider.notifications.isEmpty) { return Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ Icon(Icons.notifications_none, size: 56, color: Colors.grey.shade300), const SizedBox(height: 12), Text('No notifications yet', style: TextStyle(color: Colors.grey.shade500, fontSize: 15)), ], ), ); } return ListView.separated( controller: scrollController, padding: const EdgeInsets.symmetric(vertical: 8), itemCount: provider.notifications.length, separatorBuilder: (_, __) => const Divider(height: 1, indent: 72), itemBuilder: (ctx, idx) { final notif = provider.notifications[idx]; return NotificationTile( notification: notif, onTap: () { if (!notif.isRead) provider.markAsRead(notif.id); }, ); }, ); }, ), ), ], ), ); }, ); } }