Flutter数据持久化插件get_rx_persist的使用

Flutter数据持久化插件get_rx_persist的使用

get_rx_persist

一个用于自动恢复和持久化的Flutter项目。

示例

请查看示例

特性

  • 易于使用
  • 支持所有平台
  • 支持各种自定义存储
  • 在多个实际项目中使用
  • 100% 测试覆盖率

支持的数据类型

int, num, double, String, bool, Null, Object, List, Set, Map

维护

此项目正在维护中。

安装

flutter pub add get_rx_persist

存储

提供的存储

  • DefaultStorageProvider/GetStorageProvider: 使用GetStorage作为存储
  • MemoryStorageProvider: 使用内存作为存储
  • MockStorageProvider: 用于测试,提供一些测试辅助方法,请参阅源码获取更多信息

自定义存储

创建一个继承自StorageProvider的自定义类:

import 'package:get_rx_persist/src/storage_provider.dart';

// 您的自定义存储提供器
class CustomizedStorageProvider extends StorageProvider {
  // 实现所有抽象方法
}

完整示例

0. 设置

始终记得执行以下操作:

import 'package:get_rx_persist/get_rx_persist.dart';

void main() async {
  await GetRxPersist.init(); // 这一行非常重要!!!!
  runApp(const App());
}

1. 基础用法

class Product {
  final name = 'Code'.obs.persist('product.name'); // 键 [product.name] 可以更改为您喜欢的任何值
  final createdAt = 123141212412.obs.persist('product.createdAt');
  final isOnTop = false.obs.persist('product.isOnTop');
  
  final Rx<String> introduction = Rx<String>('free to use').persist('product.introduction');
}

2. 可空用法

class Product {
  final uuid = Rx<String?>(null).obs.persist('product.uuid');
}

Product().uuid.value = null;
Product().uuid.value = 'uuid';

3. 对象用法

方法 1: 序列化对象

您可以使用在线 JSON 到 Dart 转换器生成序列化对象。

注意: 您不需要为序列化对象提供序列化器。

class Profile {
  String? name;

  Profile({this.name});

  Profile.fromJson(Map<String, dynamic> json) {
    name = json['name'];
  }

  // 必须实现: 这个方法会被 [get_rx_persist] 自动调用
  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['name'] = this.name;
    return data;
  }
}

class User {
  final profile = Profile().obs.persist(
    'user.profile',
    deserializer: Profile.fromJson, // 当您持久化一个对象值时,必须提供反序列化器。
  );
}

方法 2: 序列化器和反序列化器

class Profile {
  String? name;
  Profile({this.name});
}

class User {
  final profile = Profile().obs.persist(
    'user.profile',
    serializer: (obj) => {'name': obj.name}, // 必须实现
    deserializer: (jsonMap) => Profile(name: jsonMap['name']), // 必须实现
  );
}

更多关于Flutter数据持久化插件get_rx_persist的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter数据持久化插件get_rx_persist的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


get_rx_persist 是一个用于 Flutter 的数据持久化插件,它结合了 get 状态管理库和 rxdart 响应式编程库,提供了一种简单且强大的方式来持久化和管理应用程序的状态数据。通过 get_rx_persist,你可以轻松地将应用程序的状态保存到本地存储(如 SharedPreferences 或 Hive),并在应用程序重新启动时恢复这些状态。

安装 get_rx_persist

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

dependencies:
  flutter:
    sdk: flutter
  get_rx_persist: ^1.0.0

然后运行 flutter pub get 来安装依赖。

基本用法

1. 初始化 GetRxPersist

在使用 get_rx_persist 之前,你需要初始化它。通常你可以在 main.dart 文件中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 GetRxPersist
  await GetRxPersist.init();
  
  runApp(MyApp());
}

2. 创建可持久化的 Rx 变量

你可以使用 RxPersist 来创建可持久化的 Rx 变量。这些变量会在应用程序重启时自动从本地存储中恢复。

import 'package:get/get.dart';
import 'package:get_rx_persist/get_rx_persist.dart';

class MyController extends GetxController {
  // 创建一个可持久化的 RxInt 变量
  final RxPersistInt counter = RxPersistInt('counter', defaultValue: 0);

  void increment() {
    counter.value++;
  }
}

3. 在 UI 中使用可持久化的 Rx 变量

你可以在 UI 中使用 GetXObx 来观察和更新这些可持久化的 Rx 变量。

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'controller.dart'; // 假设你的控制器在 controller.dart 文件中

class MyApp extends StatelessWidget {
  final MyController controller = Get.put(MyController());

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('GetRxPersist Example')),
        body: Center(
          child: Obx(() => Text('Counter: ${controller.counter.value}')),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            controller.increment();
          },
          child: Icon(Icons.add),
        ),
      ),
    );
  }
}

支持的持久化类型

get_rx_persist 支持多种类型的持久化变量,包括:

  • RxPersistInt
  • RxPersistDouble
  • RxPersistString
  • RxPersistBool
  • RxPersistList
  • RxPersistMap

自定义存储

默认情况下,get_rx_persist 使用 SharedPreferences 作为存储后端。你也可以通过实现 PersistStorage 接口来自定义存储后端。

class CustomStorage implements PersistStorage {
  [@override](/user/override)
  Future<void> init() async {
    // 初始化自定义存储
  }

  [@override](/user/override)
  Future<void> write<T>(String key, T value) async {
    // 将值写入自定义存储
  }

  [@override](/user/override)
  Future<T?> read<T>(String key) async {
    // 从自定义存储中读取值
  }

  [@override](/user/override)
  Future<void> delete(String key) async {
    // 从自定义存储中删除值
  }
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 使用自定义存储初始化 GetRxPersist
  await GetRxPersist.init(storage: CustomStorage());
  
  runApp(MyApp());
}
回到顶部