类型化共享偏好设置

pub package

围绕 shared_preferences 的类型安全包装器,受 ts-localstorage 启发。

为什么?

  • Dart 编译器现在可以防止您将 bool 写入 int
  • 您可以将与 [SharedPreferences] 相关的所有内容组织在一个文件中,而不仅仅是字符串键
  • 您不再需要在任何地方调用 SharedPreferences.getInstance()

用法

  • 您可以创建一个 PrefKeyPrefKeyNullable,传入一个字符串作为键和一个默认值,当值不存在于 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 时,同步方法会带来好处。

GitHub

查看 Github