relatica/lib/controls/notifications_control.dart

41 lines
1.3 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
import 'package:provider/provider.dart';
import '../models/user_notification.dart';
import '../services/notifications_manager.dart';
import '../utils/dateutils.dart';
import '../utils/snackbar_builder.dart';
class NotificationControl extends StatelessWidget {
final UserNotification notification;
const NotificationControl({
super.key,
required this.notification,
});
@override
Widget build(BuildContext context) {
final manager = context.watch<NotificationsManager>();
return ListTile(
tileColor: notification.seen ? null : Colors.black12,
leading: Text(notification.fromName),
title: HtmlWidget(notification.content),
subtitle:
Text(ElapsedDateUtils.epochSecondsToString(notification.timestamp)),
trailing: notification.seen
? null
: IconButton(
onPressed: () async {
final result = await manager.markSeen(notification);
if (result.isFailure) {
buildSnackbar(
context, 'Error marking notification: ${result.error}');
}
},
icon: Icon(Icons.close_rounded)),
);
}
}