共享对象

一个包装器,用于共享偏好设置,以简化可持久化数据。

概念

创建可持久化值通常需要一些样板代码。例如

import 'package:shared_preferences/shared_preferences.dart';

String? _value;

Future<void> setValue(String newValue) async {
  final sharedPrefs = await SharedPreferences.getInstance();
  await sharedPrefs.setString('name', newValue);
}

Future<String?> getValue() async {
  final sharedPrefs = await SharedPreferences.getInstance();
  return sharedPrefs.getString('name');
}

shared_objects 包旨在将这些样板代码减少到更简洁的实现。例如

import 'package:shared_objects/shared_objects.dart';

final value = SharedString('name');
await value.set('newValue');
await value.get();

入门

使用以下命令将依赖项添加到您的项目中:flutter pub add shared_objects

用法

定义可持久化对象的基类是显式类型化的 SharedObjectBase 类。所有可持久化对象都由以下组件定义

  • id:与此对象关联的唯一的 String 键。
  • set(T?):异步设置此对象的新值。如果新值为 null,则会删除对象内容,并将 idSharedPreferences 映射中移除。
  • get():异步获取此对象的当前值。
  • mutate(T? Function(T?)):通过传递函数异步修改此对象的值。该函数通过 get() 获得对象的初始值,并且必须返回更新后的值。如果初始值等于更新后的值,则不会进行更改,从而跳过对 set(T?) 的调用。

该包已包含该基类的多个扩展,以方便使用。这包括以下类

  • SharedBool:可持久化的 bool
  • SharedDouble:具有一些算术扩展(addsubmuldivpow)的可持久化 double
  • SharedInt:具有一些算术扩展(addsubmuldivpow)的可持久化 int
  • SharedString:具有 append 扩展的可持久化 String
  • SharedStringList:具有一些列表扩展(addaddAllremove)的可持久化 List<String>

GitHub

查看 Github