类型化共享偏好设置
围绕 shared_preferences 的类型安全包装器,受 ts-localstorage 启发。
为什么?
- Dart 编译器现在可以防止您将
bool写入int键 - 您可以将与 [SharedPreferences] 相关的所有内容组织在一个文件中,而不仅仅是字符串键
- 您不再需要在任何地方调用
SharedPreferences.getInstance()
用法
- 您可以创建一个
PrefKey或PrefKeyNullable,传入一个字符串作为键和一个默认值,当值不存在于 SharedPreferences 中时返回该默认值。 - 对于
PrefKeyNullable,仍然需要默认值以保证类型安全,但实际上它并未在任何地方使用
查看 test/shared_preferences_typed_test.dart 以获得更详细的示例,以下是最常见的用例
基本示例(非可空)
/// Description
const key = PrefKey("some_key", true);
final valueBefore = await key.read(); // -> true (default value)
await key.write(false); // -> Value is now false
基本示例(可空)
/// Description
const key = PrefKeyNullable("some_key", true);
final valueBefore = await key.read(); // -> null
await key.write(false); // -> Value is now false
现有的 SharedPreferences 实例(非可空)
final prefs = await SharedPreferences.instance();
/// Description
const key = PrefKey("some_key", true);
final valueBefore = await key.readSync(prefs); // -> true (default value)
await key.write(false); // -> Value is now false
现有的 SharedPreferences 实例(可空)
final prefs = await SharedPreferences.instance();
/// Description
const key = PrefKeyNullable("some_key", true);
final valueBefore = await key.readSync(prefs); // -> null
await key.writeSync(false, prefs); // -> Value is now false
附加信息
- 如果您不在其他地方使用现有的 SharedPreferences 实例,它不会带来任何性能上的提升。但是,当您确实无法在某处使用
await时,同步方法会带来好处。