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

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

特性

提供了对SharedPreferences API的大部分访问。允许获取和设置SharedPreferences值。还有其他杂项API引用SP。

开始

pubspec.yaml文件中添加shared_prefs_manager依赖。

使用

完整的示例代码可以在以下链接查看:

import 'package:shared_prefs_manager/shared_prefs_manager.dart';

void main() async {
  // 初始化SharedPreferences
  initSharedPrefs();

  // 获取所有键
  Set<String> allKeys = getAllKeys();
  print(allKeys);

  // 设置一个整数值
  bool intWasSet = await setIntValue("myIntValue", 1121);
  
  if (intWasSet) {
    // 检查键是否存在
    bool valKeyDoesExist = prefsContainsKey("myIntValue");
    // 获取整数值
    int myIntVal = getIntValue("myIntValue");

    print(valKeyDoesExist); // 输出: true
    print(myIntVal);        // 输出: 1121
  }

  // 移除指定键
  prefsRemove("myIntValue");

  // 清空所有键值对
  prefsClearAll();

  // 再次获取所有键
  allKeys = getAllKeys();
  print(allKeys); // 输出: []
}

详细步骤

  1. 初始化SharedPreferences

    initSharedPrefs();
    
  2. 设置一个整数值

    bool intWasSet = await setIntValue("myIntValue", 1121);
    

    setIntValue方法用于设置一个整数类型的值。如果设置成功,返回true,否则返回false

  3. 检查键是否存在

    bool valKeyDoesExist = prefsContainsKey("myIntValue");
    

    prefsContainsKey方法用于检查给定的键是否存在于SharedPreferences中。

  4. 获取整数值

    int myIntVal = getIntValue("myIntValue");
    

    getIntValue方法用于获取指定键对应的整数值。

  5. 移除指定键

    prefsRemove("myIntValue");
    

    prefsRemove方法用于移除指定键及其对应的值。

  6. 清空所有键值对

    prefsClearAll();
    

    prefsClearAll方法用于清除SharedPreferences中的所有键值对。

  7. 获取所有键

    Set<String> allKeys = getAllKeys();
    print(allKeys);
    

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

1 回复

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


shared_preferences 是 Flutter 中用于存储简单键值对数据的插件,适用于存储轻量级的本地数据,如用户设置、应用配置等。shared_prefs_manager 是一个基于 shared_preferences 的封装库,提供了更简洁的 API 来管理本地存储。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  shared_prefs_manager: ^1.0.0

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

2. 初始化 SharedPrefsManager

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

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SharedPrefsManager Example',
      home: MyHomePage(),
    );
  }
}

3. 使用 SharedPrefsManager 进行数据存储和读取

SharedPrefsManager 提供了多种方法来存储和读取数据。以下是一些常见的操作示例:

存储数据

// 存储字符串
await SharedPrefsManager.setString('key_string', 'Hello, World!');

// 存储整数
await SharedPrefsManager.setInt('key_int', 42);

// 存储布尔值
await SharedPrefsManager.setBool('key_bool', true);

// 存储浮点数
await SharedPrefsManager.setDouble('key_double', 3.14);

// 存储字符串列表
await SharedPrefsManager.setStringList('key_list', ['item1', 'item2']);

读取数据

// 读取字符串
String stringValue = SharedPrefsManager.getString('key_string') ?? 'default_value';

// 读取整数
int intValue = SharedPrefsManager.getInt('key_int') ?? 0;

// 读取布尔值
bool boolValue = SharedPrefsManager.getBool('key_bool') ?? false;

// 读取浮点数
double doubleValue = SharedPrefsManager.getDouble('key_double') ?? 0.0;

// 读取字符串列表
List<String> listValue = SharedPrefsManager.getStringList('key_list') ?? [];

删除数据

// 删除指定键的数据
await SharedPrefsManager.remove('key_string');

// 清除所有数据
await SharedPrefsManager.clear();

4. 示例代码

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

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SharedPrefsManager Example',
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  String _storedValue = '';

  [@override](/user/override)
  void initState() {
    super.initState();
    _loadStoredValue();
  }

  Future<void> _loadStoredValue() async {
    String value = SharedPrefsManager.getString('key_string') ?? 'No value stored';
    setState(() {
      _storedValue = value;
    });
  }

  Future<void> _storeValue() async {
    await SharedPrefsManager.setString('key_string', 'Hello, SharedPrefsManager!');
    _loadStoredValue();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SharedPrefsManager Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Stored Value:',
              style: Theme.of(context).textTheme.headline4,
            ),
            Text(
              _storedValue,
              style: Theme.of(context).textTheme.headline6,
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _storeValue,
              child: Text('Store Value'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部