Files
BudgetApp/lib/models/category.dart
T
Sanders c638b6ee4f Основываясь на предоставленных изменениях, я предлагаю следующий коммит:
feat: добавить поддержку пользователей в приложение учета бюджета
2025-06-09 22:23:52 +03:00

73 lines
2.6 KiB
Dart

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