Files
BudgetApp/lib/models/user.dart
T
2025-06-27 18:42:02 +03:00

62 lines
2.6 KiB
Dart

import 'package:hive_ce/hive.dart';
import '../utils/id_generator.dart';
// Указываем Hive, что это модель для хранения в базе данных
// typeId: 3 - уникальный идентификатор типа для Hive (у нас уже есть 0,1,2)
part 'user.g.dart';
@HiveType(typeId: 1003)
/// Модель пользователя приложения
/// Содержит основную информацию для идентификации пользователя
class User {
/// Уникальный идентификатор пользователя
@HiveField(0) // Поле 0 в Hive - первое поле модели
final String id;
/// Имя пользователя для отображения в интерфейсе
@HiveField(1) // Поле 1 в Hive - второе поле модели
final String name;
/// Email пользователя (может использоваться для входа в будущем)
@HiveField(2) // Поле 2 в Hive - третье поле модели
final String email;
@HiveField(3) // Поле 3 в Hive - язык пользователя
final String language;
/// Конструктор пользователя
/// id генерируется автоматически, если не передан
User({
String? id, // Опциональный параметр - если null, сгенерируется автоматически
required this.name, // Обязательный параметр
required this.email, // Обязательный параметр
this.language = 'ru', // Язык по умолчанию - русский
}) : id = id ?? IdGenerator.generateId(); // Если id не передан, генерируем новый
/// Преобразование объекта в Map для сохранения в JSON или передачи по сети
Map<String, dynamic> toMap() {
return {
'id': id,
'name': name,
'email': email,
'language': language,
};
}
/// Создание объекта User из Map (например, при загрузке из JSON)
factory User.fromMap(Map<String, dynamic> map) {
return User(
id: map['id'],
name: map['name'],
email: map['email'],
language: map['language'] ?? 'ru', // Устанавливаем русский по умолчанию, если язык не указан
);
}
/// Переопределяем toString для удобного отображения в логах
@override
String toString() {
return 'User(id: $id, name: $name, email: $email)';
}
}