96 lines
2.2 KiB
Dart
96 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class NotificationItem {
|
|
final String id;
|
|
final String title;
|
|
final String message;
|
|
final NotificationType type;
|
|
final DateTime timestamp;
|
|
bool isRead;
|
|
|
|
NotificationItem({
|
|
required this.id,
|
|
required this.title,
|
|
required this.message,
|
|
required this.type,
|
|
required this.timestamp,
|
|
this.isRead = false,
|
|
});
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'id': id,
|
|
'title': title,
|
|
'message': message,
|
|
'type': type.toString(),
|
|
'timestamp': timestamp.toIso8601String(),
|
|
'isRead': isRead,
|
|
};
|
|
}
|
|
|
|
factory NotificationItem.fromJson(Map<String, dynamic> json) {
|
|
return NotificationItem(
|
|
id: json['id'],
|
|
title: json['title'],
|
|
message: json['message'],
|
|
type: NotificationType.values.firstWhere(
|
|
(e) => e.toString() == json['type'],
|
|
orElse: () => NotificationType.info,
|
|
),
|
|
timestamp: DateTime.parse(json['timestamp']),
|
|
isRead: json['isRead'] ?? false,
|
|
);
|
|
}
|
|
}
|
|
|
|
enum NotificationType {
|
|
success,
|
|
warning,
|
|
error,
|
|
info,
|
|
}
|
|
|
|
class NotificationHelper {
|
|
static Color getColor(NotificationType type) {
|
|
switch (type) {
|
|
case NotificationType.success:
|
|
return Colors.green;
|
|
case NotificationType.warning:
|
|
return Colors.orange;
|
|
case NotificationType.error:
|
|
return Colors.red;
|
|
case NotificationType.info:
|
|
default:
|
|
return Colors.blue;
|
|
}
|
|
}
|
|
|
|
static IconData getIcon(NotificationType type) {
|
|
switch (type) {
|
|
case NotificationType.success:
|
|
return Icons.check_circle;
|
|
case NotificationType.warning:
|
|
return Icons.warning;
|
|
case NotificationType.error:
|
|
return Icons.error;
|
|
case NotificationType.info:
|
|
default:
|
|
return Icons.info;
|
|
}
|
|
}
|
|
|
|
static Color getBackgroundColor(NotificationType type) {
|
|
switch (type) {
|
|
case NotificationType.success:
|
|
return Colors.green.shade50;
|
|
case NotificationType.warning:
|
|
return Colors.orange.shade50;
|
|
case NotificationType.error:
|
|
return Colors.red.shade50;
|
|
case NotificationType.info:
|
|
default:
|
|
return Colors.blue.shade50;
|
|
}
|
|
}
|
|
}
|