notification_view.dart 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import 'package:appflowy/user/application/reminder/reminder_bloc.dart';
  2. import 'package:appflowy/workspace/presentation/notifications/notification_item.dart';
  3. import 'package:appflowy/workspace/presentation/notifications/notifications_hub_empty.dart';
  4. import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
  5. import 'package:appflowy_backend/protobuf/flowy-user/reminder.pb.dart';
  6. import 'package:flutter/material.dart';
  7. class NotificationsView extends StatelessWidget {
  8. const NotificationsView({
  9. super.key,
  10. required this.shownReminders,
  11. required this.reminderBloc,
  12. required this.views,
  13. this.isUpcoming = false,
  14. this.onAction,
  15. this.onDelete,
  16. this.onReadChanged,
  17. });
  18. final List<ReminderPB> shownReminders;
  19. final ReminderBloc reminderBloc;
  20. final List<ViewPB> views;
  21. final bool isUpcoming;
  22. final Function(ReminderPB reminder)? onAction;
  23. final Function(ReminderPB reminder)? onDelete;
  24. final Function(ReminderPB reminder, bool isRead)? onReadChanged;
  25. @override
  26. Widget build(BuildContext context) {
  27. if (shownReminders.isEmpty) {
  28. return const Center(child: NotificationsHubEmpty());
  29. }
  30. return SingleChildScrollView(
  31. child: Column(
  32. crossAxisAlignment: CrossAxisAlignment.start,
  33. children: [
  34. ...shownReminders.map(
  35. (reminder) {
  36. return NotificationItem(
  37. reminderId: reminder.id,
  38. key: ValueKey(reminder.id),
  39. title: reminder.title,
  40. scheduled: reminder.scheduledAt,
  41. body: reminder.message,
  42. isRead: reminder.isRead,
  43. readOnly: isUpcoming,
  44. onReadChanged: (isRead) =>
  45. onReadChanged?.call(reminder, isRead),
  46. onDelete: () => onDelete?.call(reminder),
  47. onAction: () => onAction?.call(reminder),
  48. );
  49. },
  50. ),
  51. ],
  52. ),
  53. );
  54. }
  55. }