Khoren Markosyan
3 years ago
12 changed files with 214 additions and 182 deletions
@ -0,0 +1,100 @@ |
|||||||
|
import 'dart:convert'; |
||||||
|
|
||||||
|
import 'package:flutter/material.dart'; |
||||||
|
import 'package:shared_preferences/shared_preferences.dart'; |
||||||
|
import 'package:zxscanner/configs/app_store.dart'; |
||||||
|
|
||||||
|
late SharedPreferences sharedPreferences; |
||||||
|
|
||||||
|
Future<void> initializePrefs() async { |
||||||
|
sharedPreferences = await SharedPreferences.getInstance(); |
||||||
|
final themeModeString = getPrefString( |
||||||
|
themeModePref, |
||||||
|
defaultValue: appStore.themeMode.toString(), |
||||||
|
); |
||||||
|
await appStore.setThemeMode( |
||||||
|
ThemeMode.values |
||||||
|
.firstWhere((element) => element.toString() == themeModeString), |
||||||
|
); |
||||||
|
await appStore.setColorSchemeIndex( |
||||||
|
getPrefInt(colorSchemeIndexPref, defaultValue: appStore.colorSchemeIndex), |
||||||
|
); |
||||||
|
await appStore.toggleSoundMode( |
||||||
|
value: getPrefBool(isSoundOnPref, defaultValue: appStore.isSoundOn), |
||||||
|
); |
||||||
|
await appStore.toggleVibrationMode( |
||||||
|
value: getPrefBool(isVibrationOnPref, defaultValue: appStore.isVibrationOn), |
||||||
|
); |
||||||
|
await appStore.setLanguage( |
||||||
|
getPrefString(languagePref, defaultValue: appStore.selectedLanguage), |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/// Add a value in SharedPref based on their type - Must be a String, int, bool, double, Map<String, dynamic> or StringList |
||||||
|
Future<bool> setPrefValue(String key, dynamic value, |
||||||
|
{bool print = true}) async { |
||||||
|
if (value is String) { |
||||||
|
return await sharedPreferences.setString(key, value); |
||||||
|
} else if (value is int) { |
||||||
|
return await sharedPreferences.setInt(key, value); |
||||||
|
} else if (value is bool) { |
||||||
|
return await sharedPreferences.setBool(key, value); |
||||||
|
} else if (value is double) { |
||||||
|
return await sharedPreferences.setDouble(key, value); |
||||||
|
} else if (value is Map<String, dynamic>) { |
||||||
|
return await sharedPreferences.setString(key, jsonEncode(value)); |
||||||
|
} else if (value is List<String>) { |
||||||
|
return await sharedPreferences.setStringList(key, value); |
||||||
|
} else { |
||||||
|
throw ArgumentError( |
||||||
|
'Invalid value ${value.runtimeType} - Must be a String, int, bool, double, Map<String, dynamic> or StringList'); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns List of Keys that matches with given Key |
||||||
|
List<String> getMatchingSharedPrefKeys(String key) { |
||||||
|
List<String> keys = []; |
||||||
|
sharedPreferences.getKeys().forEach((element) { |
||||||
|
if (element.contains(key)) { |
||||||
|
keys.add(element); |
||||||
|
} |
||||||
|
}); |
||||||
|
return keys; |
||||||
|
} |
||||||
|
|
||||||
|
/// Returns a StringList if exists in SharedPref |
||||||
|
List<String>? getPrefStringList(String key) => |
||||||
|
sharedPreferences.getStringList(key); |
||||||
|
|
||||||
|
/// Returns a Bool if exists in SharedPref |
||||||
|
bool getPrefBool(String key, {bool defaultValue = false}) => |
||||||
|
sharedPreferences.getBool(key) ?? defaultValue; |
||||||
|
|
||||||
|
/// Returns a Double if exists in SharedPref |
||||||
|
double getPrefDouble(String key, {double defaultValue = 0.0}) => |
||||||
|
sharedPreferences.getDouble(key) ?? defaultValue; |
||||||
|
|
||||||
|
/// Returns a Int if exists in SharedPref |
||||||
|
int getPrefInt(String key, {int defaultValue = 0}) => |
||||||
|
sharedPreferences.getInt(key) ?? defaultValue; |
||||||
|
|
||||||
|
/// Returns a String if exists in SharedPref |
||||||
|
String getPrefString(String key, {String defaultValue = ''}) => |
||||||
|
sharedPreferences.getString(key) ?? defaultValue; |
||||||
|
|
||||||
|
/// Returns a JSON if exists in SharedPref |
||||||
|
Map<String, dynamic> getPrefJSON(String key, |
||||||
|
{Map<String, dynamic>? defaultValue}) { |
||||||
|
if (sharedPreferences.containsKey(key)) { |
||||||
|
return jsonDecode(sharedPreferences.getString(key) ?? ''); |
||||||
|
} else { |
||||||
|
return defaultValue ?? {}; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// remove key from SharedPref |
||||||
|
Future<bool> removePrefKey(String key) async => |
||||||
|
await sharedPreferences.remove(key); |
||||||
|
|
||||||
|
/// clear SharedPref |
||||||
|
Future<bool> clearSharedPref() async => await sharedPreferences.clear(); |
Loading…
Reference in new issue