Flutter本地数据存储插件simple_shared_pref的使用

Flutter本地数据存储插件simple_shared_pref的使用

SimpleSharedPref

SimpleSharedPref 是一个 Flutter 包,它提供了方便地访问共享偏好设置的功能。它遵循单例设计模式,允许你方便地在共享偏好设置中存储和检索数据。它还支持使用 CryptoModule 类对敏感数据进行可选的加密和解密。

安装

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  simple_shared_pref: ^2.0.0

使用

在你的 Dart 文件中导入包和 SimpleSharedPref 类:

import 'package:simple_shared_pref/simple_shared_pref.dart';

创建一个 SimpleSharedPref 的实例:

SimpleSharedPref sharedPref = SimpleSharedPref();

初始化共享偏好设置,建议在主函数或应用程序启动时调用:

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

存储和检索值

你可以存储和检索各种类型的值到共享偏好设置中:

// 存储整数值
sharedPref.setValue<int>('counter', 10);

// 检索整数值
int? counterValue = sharedPref.getValue<int>('counter');

// 存储字符串值
sharedPref.setValue<String>('username', 'JohnDoe');

// 检索字符串值
String? username = sharedPref.getValue<String>('username');

// 存储布尔值
sharedPref.setValue<bool>('isLoggedIn', true);

// 检索布尔值
bool? isLoggedIn = sharedPref.getValue<bool>('isLoggedIn');

移除值

要从共享偏好设置中移除一个值,可以使用 removeValue 方法:

sharedPref.removeValue('counter');

检查值是否存在

你可以使用 containsKey 方法检查一个值是否存在于共享偏好设置中:

bool isUsernameStored = sharedPref.containsKey('username');

清除共享偏好设置

要清除所有存储在共享偏好设置中的值,可以使用 clear 方法:

sharedPref.clear();

示例代码

以下是一个完整的示例代码,展示了如何使用 SimpleSharedPref 插件来存储和检索不同类型的值:

import 'package:example/SharedPrefEnum.dart';
import 'package:flutter/material.dart';
import 'package:simple_shared_pref/simple_shared_pref.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SimpleSharedPref().init(allowEncryptAndDecrypt: true);
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
    setDataToShared();
  }

  void setDataToShared() async {
    await SimpleSharedPref().setValue<int>(value: 2, key: SharedPrefEnum.id);
    await SimpleSharedPref().setValue<double>(value: 2.2, key: SharedPrefEnum.price);
    await SimpleSharedPref().setValue<bool>(value: true, key: SharedPrefEnum.selected);
    await SimpleSharedPref().setValue<String>(value: 'Product', key: SharedPrefEnum.name);
    await SimpleSharedPref().setValue<List<String>>(
        value: ['Product1', 'Product2', 'Product3'], key: SharedPrefEnum.namesList);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'simple shared pref',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'simple shared pref Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            ListView(
              padding: EdgeInsets.all(20.0),
              shrinkWrap: true,
              children: [
                Text('id: ${SimpleSharedPref().getValue<int>(key: SharedPrefEnum.id)?.toString() ?? "Not Found"}'),
                Text('price: ${SimpleSharedPref().getValue<double>(key: SharedPrefEnum.price)?.toString() ?? "Not Found"}'),
                Text('product: ${SimpleSharedPref().getValue<String>(key: SharedPrefEnum.name)?.toString() ?? "Not Found"}'),
                Text('selected: ${SimpleSharedPref().getValue<bool>(key: SharedPrefEnum.selected)?.toString() ?? "Not Found"}'),
                Text(SimpleSharedPref().getValue<List<String>>(key: SharedPrefEnum.namesList)?.toString() ?? "Not Found"),
              ],
            )
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


simple_shared_pref 是一个简化版的 Flutter 插件,用于在本地存储数据。它基于 SharedPreferences,但提供了更简单的 API 来存储和获取数据。以下是使用 simple_shared_pref 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 simple_shared_pref 依赖:

dependencies:
  flutter:
    sdk: flutter
  simple_shared_pref: ^1.0.0  # 请检查最新版本

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

2. 初始化插件

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

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

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

3. 存储数据

使用 SimpleSharedPrefset 方法来存储数据。你可以存储 Stringintdoublebool 等类型的数据。

import 'package:simple_shared_pref/simple_shared_pref.dart';

void saveData() async {
  await SimpleSharedPref.setString('key_string', 'Hello, Flutter!');
  await SimpleSharedPref.setInt('key_int', 42);
  await SimpleSharedPref.setDouble('key_double', 3.14);
  await SimpleSharedPref.setBool('key_bool', true);
}

4. 获取数据

使用 SimpleSharedPrefget 方法来获取存储的数据。

import 'package:simple_shared_pref/simple_shared_pref.dart';

void getData() async {
  String stringValue = await SimpleSharedPref.getString('key_string');
  int intValue = await SimpleSharedPref.getInt('key_int');
  double doubleValue = await SimpleSharedPref.getDouble('key_double');
  bool boolValue = await SimpleSharedPref.getBool('key_bool');

  print('String: $stringValue');
  print('Int: $intValue');
  print('Double: $doubleValue');
  print('Bool: $boolValue');
}

5. 删除数据

使用 SimpleSharedPrefremove 方法来删除存储的数据。

import 'package:simple_shared_pref/simple_shared_pref.dart';

void removeData() async {
  await SimpleSharedPref.remove('key_string');
}

6. 清除所有数据

使用 SimpleSharedPrefclear 方法来清除所有存储的数据。

import 'package:simple_shared_pref/simple_shared_pref.dart';

void clearData() async {
  await SimpleSharedPref.clear();
}

完整示例

以下是一个完整的示例,展示了如何使用 simple_shared_pref 存储、获取和删除数据:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Simple Shared Pref Example')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: saveData,
                child: Text('Save Data'),
              ),
              ElevatedButton(
                onPressed: getData,
                child: Text('Get Data'),
              ),
              ElevatedButton(
                onPressed: removeData,
                child: Text('Remove Data'),
              ),
              ElevatedButton(
                onPressed: clearData,
                child: Text('Clear All Data'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void saveData() async {
    await SimpleSharedPref.setString('key_string', 'Hello, Flutter!');
    await SimpleSharedPref.setInt('key_int', 42);
    await SimpleSharedPref.setDouble('key_double', 3.14);
    await SimpleSharedPref.setBool('key_bool', true);
  }

  void getData() async {
    String stringValue = await SimpleSharedPref.getString('key_string');
    int intValue = await SimpleSharedPref.getInt('key_int');
    double doubleValue = await SimpleSharedPref.getDouble('key_double');
    bool boolValue = await SimpleSharedPref.getBool('key_bool');

    print('String: $stringValue');
    print('Int: $intValue');
    print('Double: $doubleValue');
    print('Bool: $boolValue');
  }

  void removeData() async {
    await SimpleSharedPref.remove('key_string');
  }

  void clearData() async {
    await SimpleSharedPref.clear();
  }
}
回到顶部