import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; import '../models/category_model.dart'; import 'package:uuid/uuid.dart'; class CategoryProvider extends ChangeNotifier { List _categories = []; late Box _categoryBox; List get categories => _categories; Future init() async { _categoryBox = await Hive.openBox('categories'); _categories = _categoryBox.values.toList(); // 카테고리가 비어있으면 기본 카테고리 추가 if (_categories.isEmpty) { await _initDefaultCategories(); } notifyListeners(); } // 기본 카테고리 초기화 Future _initDefaultCategories() async { final defaultCategories = [ {'name': 'OTT 서비스', 'color': '#3B82F6', 'icon': 'live_tv'}, {'name': '음악 서비스', 'color': '#EC4899', 'icon': 'music_note'}, {'name': 'AI 서비스', 'color': '#8B5CF6', 'icon': 'psychology'}, {'name': '프로그래밍/개발', 'color': '#10B981', 'icon': 'code'}, {'name': '오피스/협업 툴', 'color': '#F59E0B', 'icon': 'business_center'}, {'name': '기타 서비스', 'color': '#6B7280', 'icon': 'more_horiz'}, ]; for (final category in defaultCategories) { final newCategory = CategoryModel( id: const Uuid().v4(), name: category['name']!, color: category['color']!, icon: category['icon']!, ); await _categoryBox.put(newCategory.id, newCategory); _categories.add(newCategory); } } Future addCategory({ required String name, required String color, required String icon, }) async { final newCategory = CategoryModel( id: const Uuid().v4(), name: name, color: color, icon: icon, ); await _categoryBox.put(newCategory.id, newCategory); _categories.add(newCategory); notifyListeners(); } Future updateCategory(CategoryModel updated) async { await _categoryBox.put(updated.id, updated); int index = _categories.indexWhere((cat) => cat.id == updated.id); if (index != -1) { _categories[index] = updated; notifyListeners(); } } Future deleteCategory(String id) async { await _categoryBox.delete(id); _categories.removeWhere((cat) => cat.id == id); notifyListeners(); } CategoryModel? getCategoryById(String id) { try { return _categories.firstWhere((cat) => cat.id == id); } catch (_) { return null; } } }