Flutter动态共享偏好设置插件dynamic_shared_preferences的使用

Flutter 动态共享偏好设置插件 dynamic_shared_preferences 的使用

特性

你可以使用这个包保存和检索以下类型的数据:

  • String
  • int
  • double
  • List<String>
  • 数据模型

开始使用

要使用此插件,你需要在 pubspec.yaml 文件中添加依赖项:

dependencies:
  ...
  dynamic_shared_preferences: ^0.0.1

使用方法

实例化

首先,实例化 DynamicSharedPreferences 类:

DynamicSharedPreferences gen = DynamicSharedPreferences();

保存值到键

你可以保存不同类型的数据到指定的键中。例如,保存一个字符串值:

gen.save(key: 'keyName', value: 'keyValue', isModel: false);

你也可以保存一个数据模型:

gen.save(key: 'keyName', value: ParsedDataModel, isModel: true);

获取键中的值

从键中获取值时,同样需要指定是否为数据模型:

gen.get(key: 'keyName', isModel: true).then((onValue) {
  // 处理获取到的数据模型
});

gen.get(key: 'keyName', isModel: false).then((onValue) {
  // 处理获取到的基本类型数据
});

移除键中的值

你可以通过键名移除存储的值:

gen.remove(key: 'keyName');

清除所有键值对

如果你需要清除所有的键值对,可以调用 clear() 方法:

gen.clear();

完整示例

以下是一个完整的示例代码,展示了如何使用 dynamic_shared_preferences 插件保存和读取数据。

保存数据模型到键

import 'dart:convert';

import 'package:dynamic_shared_preferences/dynamic_shared_preferences.dart';

void main() async {
  // 初始化插件实例
  DynamicSharedPreferences gen = DynamicSharedPreferences();

  // 假设我们有一个从 REST API 解析出来的 JSON 数据
  var response = '{"name": "John", "age": 30}';
  var parsed = json.decode(response);

  // 将 JSON 数据转换为数据模型
  var fetchedDataModel = DataModel.fromJson(parsed);

  // 保存数据模型到键
  await gen.save(key: 'keyName', value: fetchedDataModel, isModel: true);
}

从键中获取数据模型

import 'package:dynamic_shared_preferences/dynamic_shared_preferences.dart';

void main() async {
  // 初始化插件实例
  DynamicSharedPreferences gen = DynamicSharedPreferences();

  // 从键中获取数据模型
  await gen.get(key: 'keyName', isModel: true).then((onValue) {
    // 打印获取到的数据模型
    print("Saved data: ${onValue.name}");
  });
}

正常的共享偏好设置操作

import 'package:dynamic_shared_preferences/dynamic_shared_preferences.dart';

void main() async {
  // 初始化插件实例
  DynamicSharedPreferences gen = DynamicSharedPreferences();

  // 保存基本类型的值
  await gen.save(key: 'keyName', value: 'keyValue', isModel: false);

  // 获取基本类型的值
  await gen.get(key: 'keyName', isModel: false);

  // 清除所有键值对
  await gen.clear();

  // 移除特定键的值
  await gen.remove(key: 'keyName');
}

更多关于Flutter动态共享偏好设置插件dynamic_shared_preferences的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter动态共享偏好设置插件dynamic_shared_preferences的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dynamic_shared_preferences 是一个 Flutter 插件,它扩展了 shared_preferences 插件的功能,允许你在运行时动态地访问和修改共享偏好设置。这对于需要在应用程序运行时根据用户输入或其他条件动态更改偏好设置的场景非常有用。

以下是 dynamic_shared_preferences 插件的基本使用方法:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 dynamic_shared_preferences 依赖:

dependencies:
  flutter:
    sdk: flutter
  dynamic_shared_preferences: ^1.0.0

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 dynamic_shared_preferences

import 'package:dynamic_shared_preferences/dynamic_shared_preferences.dart';

3. 初始化 DynamicSharedPreferences

你可以通过 DynamicSharedPreferences.getInstance() 来获取 DynamicSharedPreferences 的实例:

DynamicSharedPreferences preferences = await DynamicSharedPreferences.getInstance();

4. 读取和写入数据

你可以使用 DynamicSharedPreferences 实例来读取和写入数据。支持的数据类型包括 int, double, bool, String, 和 List<String>

写入数据:

await preferences.setInt('myIntKey', 42);
await preferences.setDouble('myDoubleKey', 3.14);
await preferences.setBool('myBoolKey', true);
await preferences.setString('myStringKey', 'Hello, World!');
await preferences.setStringList('myStringListKey', ['one', 'two', 'three']);

读取数据:

int myInt = preferences.getInt('myIntKey') ?? 0;
double myDouble = preferences.getDouble('myDoubleKey') ?? 0.0;
bool myBool = preferences.getBool('myBoolKey') ?? false;
String myString = preferences.getString('myStringKey') ?? '';
List<String> myStringList = preferences.getStringList('myStringListKey') ?? [];

5. 动态访问偏好设置

dynamic_shared_preferences 的主要特点是它允许你在运行时动态地访问和修改偏好设置。你可以使用 getDynamicsetDynamic 方法来处理动态键和值。

动态写入数据:

String dynamicKey = 'dynamicKey';
await preferences.setDynamic(dynamicKey, 42);
await preferences.setDynamic(dynamicKey, 3.14);
await preferences.setDynamic(dynamicKey, true);
await preferences.setDynamic(dynamicKey, 'Hello, World!');
await preferences.setDynamic(dynamicKey, ['one', 'two', 'three']);

动态读取数据:

dynamic dynamicValue = preferences.getDynamic(dynamicKey);

6. 删除数据

你可以使用 remove 方法来删除特定的键值对:

await preferences.remove('myIntKey');

7. 清除所有数据

你可以使用 clear 方法来清除所有的偏好设置:

await preferences.clear();

8. 注意事项

  • dynamic_shared_preferences 是基于 shared_preferences 的扩展,因此它继承了 shared_preferences 的所有功能。
  • 由于 dynamic_shared_preferences 允许动态键和值,因此在处理动态数据时需要格外小心,确保键和值的类型正确。

9. 示例代码

以下是一个完整的示例代码,展示了如何使用 dynamic_shared_preferences

import 'package:flutter/material.dart';
import 'package:dynamic_shared_preferences/dynamic_shared_preferences.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  DynamicSharedPreferences preferences = await DynamicSharedPreferences.getInstance();

  // 写入数据
  await preferences.setInt('myIntKey', 42);
  await preferences.setDouble('myDoubleKey', 3.14);
  await preferences.setBool('myBoolKey', true);
  await preferences.setString('myStringKey', 'Hello, World!');
  await preferences.setStringList('myStringListKey', ['one', 'two', 'three']);

  // 读取数据
  int myInt = preferences.getInt('myIntKey') ?? 0;
  double myDouble = preferences.getDouble('myDoubleKey') ?? 0.0;
  bool myBool = preferences.getBool('myBoolKey') ?? false;
  String myString = preferences.getString('myStringKey') ?? '';
  List<String> myStringList = preferences.getStringList('myStringListKey') ?? [];

  print('myInt: $myInt');
  print('myDouble: $myDouble');
  print('myBool: $myBool');
  print('myString: $myString');
  print('myStringList: $myStringList');

  // 动态访问
  String dynamicKey = 'dynamicKey';
  await preferences.setDynamic(dynamicKey, 42);
  dynamic dynamicValue = preferences.getDynamic(dynamicKey);
  print('dynamicValue: $dynamicValue');

  // 删除数据
  await preferences.remove('myIntKey');

  // 清除所有数据
  await preferences.clear();
}
回到顶部