TKK_E32231503/lib/models/notification_model.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;
}
}
}