import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:stackwallet/notifications/notification_card.dart'; import 'package:stackwallet/providers/providers.dart'; import 'package:stackwallet/providers/ui/unread_notifications_provider.dart'; import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/widgets/background.dart'; import 'package:stackwallet/widgets/custom_buttons/app_bar_icon_button.dart'; import 'package:stackwallet/widgets/rounded_white_container.dart'; class NotificationsView extends ConsumerStatefulWidget { const NotificationsView({ Key? key, this.walletId, }) : super(key: key); final String? walletId; static const routeName = "/notifications"; @override ConsumerState createState() => _NotificationsViewState(); } class _NotificationsViewState extends ConsumerState { @override void initState() { super.initState(); } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { final notifications = widget.walletId == null ? ref .watch(notificationsProvider.select((value) => value.notifications)) : ref .watch(notificationsProvider.select((value) => value.notifications)) .where((element) => element.walletId == widget.walletId) .toList(growable: false); return Background( child: Scaffold( backgroundColor: Theme.of(context).extension()!.background, appBar: AppBar( title: Text( "Notifications", style: STextStyles.navBarTitle(context), ), leading: AppBarBackButton( onPressed: () async { Navigator.of(context).pop(); }, ), ), body: Padding( padding: const EdgeInsets.all(12), child: notifications.isNotEmpty ? Column( children: [ Expanded( child: ListView.builder( shrinkWrap: true, itemCount: notifications.length, itemBuilder: (builderContext, index) { final notification = notifications[index]; if (notification.read == false) { ref .read(unreadNotificationsStateProvider.state) .state .add(notification.id); } return Padding( padding: const EdgeInsets.all(4), child: NotificationCard( notification: notifications[index], ), ); }, ), ), ], ) : Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Padding( padding: const EdgeInsets.all(4), child: RoundedWhiteContainer( child: Center( child: FittedBox( fit: BoxFit.scaleDown, child: Text( "Notifications will appear here", style: STextStyles.itemSubtitle(context), ), ), ), ), ) ], ), ), ), ); } }