Flutter本地存储插件sa_shared_preference_lego的使用

Flutter本地存储插件sa_shared_preference_lego的使用

lego project pub package

sa_shared_preference_lego #

`sa_shared_preference_lego` 是基于 simple architecture lego framework 的共享偏好设置工具。

安装 #

  1. 在 `lego` 项目的根目录打开终端,输入以下命令以安装 CLI,并创建一个新的 `lego` 项目(如果还没有一个项目)。
flutter pub global activate lego_cli
lego create
  1. 在终端中,输入以下命令将 `sa_shared_preference_lego` 添加到项目中。
lego add sa_shared_preference_lego

使用 #

以下是一个完整的示例代码,展示如何使用 sa_shared_preference_lego 插件来读取和写入本地数据。

import 'package:sa_shared_preference_lego/sa_shared_preference_lego.dart';

void main() async {
  // 获取现有的 SharedPreferences 数据
  Check check = await CheckSharedPreferences.get();
  print("当前数据: ${check.toMap()}");

  // 修改数据
  check.s000 = "hello";

  // 更新数据到 SharedPreferences
  await CheckSharedPreferences.upsert(check);

  // 重新获取数据并打印
  Check check2 = await CheckSharedPreferences.get();
  print("更新后的数据: ${check2.toMap()}");
}

完整示例代码解释

  1. 导入插件
    首先需要导入 sa_shared_preference_lego 包。

    import 'package:sa_shared_preference_lego/sa_shared_preference_lego.dart';
    
  2. 获取现有数据
    使用 CheckSharedPreferences.get() 方法从本地存储中获取现有的 Check 对象。该对象包含了所有存储的键值对。

    Check check = await CheckSharedPreferences.get();
    print("当前数据: ${check.toMap()}");
    
  3. 修改数据
    修改 Check 对象中的某个字段(例如 s000)。

    check.s000 = "hello";
    
  4. 更新数据到本地存储
    使用 CheckSharedPreferences.upsert(check) 方法将修改后的 Check 对象保存回本地存储。

    await CheckSharedPreferences.upsert(check);
    
  5. 重新获取并打印数据
    再次调用 CheckSharedPreferences.get() 获取更新后的数据,并打印出来。

    Check check2 = await CheckSharedPreferences.get();
    print("更新后的数据: ${check2.toMap()}");
    

输出结果示例

假设初始数据为空,运行上述代码后,输出可能如下:

当前数据: {}
更新后的数据: {s000: hello}

更多关于Flutter本地存储插件sa_shared_preference_lego的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter本地存储插件sa_shared_preference_lego的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


sa_shared_preference_lego 是一个用于 Flutter 的本地存储插件,它基于 SharedPreferences,提供了更简洁和易用的 API 来管理应用程序的本地存储。这个插件通常用于存储简单的键值对数据,如用户设置、应用状态等。

安装

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

dependencies:
  flutter:
    sdk: flutter
  sa_shared_preference_lego: ^1.0.0  # 请使用最新版本

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

基本用法

1. 初始化

在使用 sa_shared_preference_lego 之前,你需要先初始化它。通常可以在应用的 main 函数中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SaSharedPreferences.init();
  runApp(MyApp());
}

2. 存储数据

你可以使用 SaSharedPreferences 提供的 set 方法来存储数据。支持的数据类型包括 intdoubleboolStringList<String>

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

3. 读取数据

你可以使用 SaSharedPreferences 提供的 get 方法来读取数据。如果键不存在,返回 null

void readData() async {
  int? myInt = await SaSharedPreferences.getInt('myIntKey');
  double? myDouble = await SaSharedPreferences.getDouble('myDoubleKey');
  bool? myBool = await SaSharedPreferences.getBool('myBoolKey');
  String? myString = await SaSharedPreferences.getString('myStringKey');
  List<String>? myStringList = await SaSharedPreferences.getStringList('myStringListKey');

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

4. 删除数据

你可以使用 SaSharedPreferences 提供的 remove 方法来删除指定的键值对。

void deleteData() async {
  await SaSharedPreferences.remove('myIntKey');
}

5. 清除所有数据

你可以使用 SaSharedPreferences 提供的 clear 方法来清除所有存储的数据。

void clearAllData() async {
  await SaSharedPreferences.clear();
}

完整示例

以下是一个完整的示例,展示了如何使用 sa_shared_preference_lego 进行数据存储和读取:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SaSharedPreferences.init();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('sa_shared_preference_lego Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: saveData,
                child: Text('Save Data'),
              ),
              ElevatedButton(
                onPressed: readData,
                child: Text('Read Data'),
              ),
              ElevatedButton(
                onPressed: deleteData,
                child: Text('Delete Data'),
              ),
              ElevatedButton(
                onPressed: clearAllData,
                child: Text('Clear All Data'),
              ),
            ],
          ),
        ),
      ),
    );
  }

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

  void readData() async {
    int? myInt = await SaSharedPreferences.getInt('myIntKey');
    double? myDouble = await SaSharedPreferences.getDouble('myDoubleKey');
    bool? myBool = await SaSharedPreferences.getBool('myBoolKey');
    String? myString = await SaSharedPreferences.getString('myStringKey');
    List<String>? myStringList = await SaSharedPreferences.getStringList('myStringListKey');

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

  void deleteData() async {
    await SaSharedPreferences.remove('myIntKey');
  }

  void clearAllData() async {
    await SaSharedPreferences.clear();
  }
}
回到顶部