Files
BudgetApp/lib/models/category.dart
T

60 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:hive_ce/hive.dart';
part 'category.g.dart';
@HiveType(typeId: 0)
/// Модель категории для группировки транзакций
/// Содержит основные параметры для визуализации и классификации
class Category {
/// Уникальный идентификатор категории
@HiveField(0)
final String id;
/// Название категории (например: "Еда", "Транспорт")
final String name;
/// Цвет категории для визуального выделения
final Color color;
/// Иконка категории для быстрой визуальной идентификации
final IconData icon;
/// Флаг указывающий тип операции:
/// true - доход (например зарплата)
/// false - расход (например покупки)
final bool isIncome;
/// Конструктор с обязательными параметрами
const Category({
required this.id,
required this.name,
required this.color,
required this.icon,
required this.isIncome,
});
/// Метод для преобразования объекта в Map (полезно для работы с БД)
Map<String, dynamic> toMap() {
return {
'id': id,
'name': name,
'color': color.value, // Сохраняем только значение цвета
'icon': icon.codePoint,
'isIncome': isIncome,
};
}
/// Фабричный метод для создания объекта из Map (например из БД)
factory Category.fromMap(Map<String, dynamic> map) {
return Category(
id: map['id'],
name: map['name'],
color: Color(map['color']),
icon: IconData(map['icon'], fontFamily: 'MaterialIcons'),
isIncome: map['isIncome'],
);
}
}