// lib/services/local/local_storage_service.dart import 'package:Stocky/models/task_adapter.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:hive_flutter/hive_flutter.dart'; class LocalStorageService extends GetxService { static final LocalStorageService _instance = LocalStorageService._internal(); late Box _settBox; late Box _tasksBox; late Box _docsBox; LocalStorageService._internal(); factory LocalStorageService() => _instance; Box get settingsBox => _settBox; Box get tasksBox => _tasksBox; Box get docsBox => _docsBox; List getTasks() { return tasksBox.values.toList(); } Future> getCompletedTasks() async { return tasksBox.values.where((task) => !task.isCompleted).toList(); } Future putNumber(String number) async { await settingsBox.put('number', number); } Future getNumber() async { return settingsBox.get('number'); } Future putUsername(String name) async { await settingsBox.put('username', name); } Future getUsername() async { return settingsBox.get('username', defaultValue: 'john doe'); } Future saveTasks(List tasks) async { await tasksBox.clear(); for (final task in tasks) { await tasksBox.put(task.id.toString(), task); } } Future addTask(Task task) async { await tasksBox.put(task.id.toString(), task); } Future updateTask(Task task) async { await tasksBox.put(task.id.toString(), task); } Future replaceTask(String oldId, Task newTask) async { await tasksBox.delete(oldId); await tasksBox.put(newTask.id.toString(), newTask); } Future removeTask(dynamic taskId) async { await tasksBox.delete(taskId.toString()); } // --- Токены --- Future saveAccessToken(String token) async { await settingsBox.put('access_token', token); } Future clearAuth() async { await settingsBox.delete('access_token'); } Future saveFcmToken(String token) async { await settingsBox.put('fcm_token', token); } String? getAccessToken() => settingsBox.get('access_token'); String? getFcmToken() => settingsBox.get('fcm_token'); static Future init() async { await Hive.initFlutter(); Hive.registerAdapter(TaskAdapter()); Hive.registerAdapter(SubtaskAdapter()); // Открываем боксы await Hive.openBox('settings'); await Hive.openBox('tasks'); await Hive.openBox('docs'); // Теперь можно безопасно получить ссылки final service = _instance; service._settBox = Hive.box('settings'); service._tasksBox = Hive.box('tasks'); service._docsBox = Hive.box('docs'); Get.put(service, permanent: true); return service; } }