import 'dart:convert'; import 'package:hmg_patient_app_new/services/logger_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; abstract class CacheService { Future saveString({required String key, required String value}); Future saveInt({required String key, required int value}); Future saveDouble({required String key, required double value}); Future saveBool({required String key, required bool value}); Future saveStringList({required String key, required List value}); String? getString({required String key}); int? getInt({required String key}); double? getDouble({required String key}); bool? getBool({required String key}); List? getStringList({required String key}); Future getObject({required String key}); Future saveObject({required String key, required dynamic value}); Future remove({required String key}); Future clear(); } class CacheServiceImp implements CacheService { final SharedPreferences sharedPreferences; final LoggerService loggerService; CacheServiceImp({ required this.sharedPreferences, required this.loggerService, }); @override Future saveString({required String key, required String value}) async { await sharedPreferences.setString(key, value); } @override Future saveInt({required String key, required int value}) async { await sharedPreferences.setInt(key, value); } @override Future saveDouble({required String key, required double value}) async { await sharedPreferences.setDouble(key, value); } @override Future saveBool({required String key, required bool value}) async { await sharedPreferences.setBool(key, value); } @override Future saveStringList({required String key, required List value}) async { await sharedPreferences.setStringList(key, value); } @override String? getString({required String key}) => sharedPreferences.getString(key); @override int? getInt({required String key}) => sharedPreferences.getInt(key); @override double? getDouble({required String key}) => sharedPreferences.getDouble(key); @override bool? getBool({required String key}) => sharedPreferences.getBool(key); @override List? getStringList({required String key}) => sharedPreferences.getStringList(key); @override Future remove({required String key}) async { await sharedPreferences.remove(key); } @override Future getObject({required String key}) async { try { await sharedPreferences.reload(); var string = sharedPreferences.getString(key); if (string == null) return null; return json.decode(string); } catch (ex) { loggerService.errorLogs(ex.toString()); return null; } } @override Future saveObject({required String key, required dynamic value}) async { try { await sharedPreferences.setString(key, json.encode(value)); } catch (ex) { loggerService.errorLogs(ex.toString()); } } @override Future clear() async { await sharedPreferences.clear(); } }