/* * SPDX-FileCopyrightText: 2019-2021 Vishesh Handa * * SPDX-License-Identifier: AGPL-3.0-or-later */ import 'package:collection/collection.dart'; import 'package:meta/meta.dart'; import 'package:shared_preferences/shared_preferences.dart'; abstract mixin class SettingsSharedPref { @protected String get id; @protected SharedPreferences get pref; @protected String? getString(String key) { return pref.getString('${id}_$key'); } @protected bool? getBool(String key) { return pref.getBool('${id}_$key'); } @protected List? getStringList(String key) { return pref.getStringList('${id}_$key'); } @protected Set? getStringSet(String key) { return getStringList(key)?.toSet(); } @protected int? getInt(String key) { return pref.getInt('${id}_$key'); } @protected double? getDouble(String key) { return pref.getDouble('${id}_$key'); } @protected Future setString(String key, String value, String? defaultValue) async { key = '${id}_$key'; if (value == defaultValue) { await pref.remove(key); } else { await pref.setString(key, value); } } @protected Future setBool(String key, bool value, bool defaultValue) async { key = '${id}_$key'; if (value == defaultValue) { await pref.remove(key); } else { await pref.setBool(key, value); } } @protected Future setInt(String key, int value, int defaultValue) async { key = '${id}_$key'; if (value == defaultValue) { await pref.remove(key); } else { await pref.setInt(key, value); } } @protected Future setDouble(String key, double value, double defaultValue) async { key = '${id}_$key'; if (value == defaultValue) { await pref.remove(key); } else { await pref.setDouble(key, value); } } @protected Future setStringSet( String key, Set value, Set defaultValue) async { key = '${id}_$key'; final bool Function(Set, Set) eq = const SetEquality().equals; if (eq(value, defaultValue)) { await pref.remove(key); } else { await pref.setStringList(key, value.toList()); } } }