import 'dart:convert'; import 'package:rental_income_tracker/models/app_settings.dart'; import 'package:rental_income_tracker/models/monthly_rent_record.dart'; import 'package:shared_preferences/shared_preferences.dart'; class StorageService { static const _settingsKey = 'app_settings'; static const _recordsKey = 'monthly_records'; Future loadSettings() async { final prefs = await SharedPreferences.getInstance(); final raw = prefs.getString(_settingsKey); if (raw == null || raw.isEmpty) { return AppSettings.defaults(); } return AppSettings.fromJson(jsonDecode(raw) as Map); } Future saveSettings(AppSettings settings) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_settingsKey, jsonEncode(settings.toJson())); } Future> loadRecords() async { final prefs = await SharedPreferences.getInstance(); final raw = prefs.getString(_recordsKey); if (raw == null || raw.isEmpty) { return {}; } final decoded = jsonDecode(raw) as Map; return decoded.map((key, value) { return MapEntry( key, MonthlyRentRecord.fromJson(value as Map), ); }); } Future saveRecords(Map records) async { final prefs = await SharedPreferences.getInstance(); final encoded = records.map((key, value) => MapEntry(key, value.toJson())); await prefs.setString(_recordsKey, jsonEncode(encoded)); } }