You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Dart
		
	
| import 'dart:convert';
 | |
| 
 | |
| import 'package:hmg_patient_app_new/services/logger_service.dart';
 | |
| import 'package:shared_preferences/shared_preferences.dart';
 | |
| 
 | |
| abstract class CacheService {
 | |
|   Future<void> saveString({required String key, required String value});
 | |
| 
 | |
|   Future<void> saveInt({required String key, required int value});
 | |
| 
 | |
|   Future<void> saveDouble({required String key, required double value});
 | |
| 
 | |
|   Future<void> saveBool({required String key, required bool value});
 | |
| 
 | |
|   Future<void> saveStringList({required String key, required List<String> value});
 | |
| 
 | |
|   String? getString({required String key});
 | |
| 
 | |
|   int? getInt({required String key});
 | |
| 
 | |
|   double? getDouble({required String key});
 | |
| 
 | |
|   bool? getBool({required String key});
 | |
| 
 | |
|   List<String>? getStringList({required String key});
 | |
| 
 | |
|   Future<dynamic> getObject({required String key});
 | |
| 
 | |
|   Future<void> saveObject({required String key, required dynamic value});
 | |
| 
 | |
|   Future<void> remove({required String key});
 | |
| 
 | |
|   Future<void> clear();
 | |
| }
 | |
| 
 | |
| class CacheServiceImp implements CacheService {
 | |
|   final SharedPreferences sharedPreferences;
 | |
|   final LoggerService loggerService;
 | |
| 
 | |
|   CacheServiceImp({
 | |
|     required this.sharedPreferences,
 | |
|     required this.loggerService,
 | |
|   });
 | |
| 
 | |
|   @override
 | |
|   Future<void> saveString({required String key, required String value}) async {
 | |
|     await sharedPreferences.setString(key, value);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Future<void> saveInt({required String key, required int value}) async {
 | |
|     await sharedPreferences.setInt(key, value);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Future<void> saveDouble({required String key, required double value}) async {
 | |
|     await sharedPreferences.setDouble(key, value);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Future<void> saveBool({required String key, required bool value}) async {
 | |
|     await sharedPreferences.setBool(key, value);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Future<void> saveStringList({required String key, required List<String> 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<String>? getStringList({required String key}) => sharedPreferences.getStringList(key);
 | |
| 
 | |
|   @override
 | |
|   Future<void> remove({required String key}) async {
 | |
|     await sharedPreferences.remove(key);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Future<dynamic> 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<void> saveObject({required String key, required dynamic value}) async {
 | |
|     try {
 | |
|       await sharedPreferences.setString(key, json.encode(value));
 | |
|     } catch (ex) {
 | |
|       loggerService.errorLogs(ex.toString());
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Future<void> clear() async {
 | |
|     await sharedPreferences.clear();
 | |
|   }
 | |
| }
 |