Flutter键值存储插件kvs的使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter键值存储插件kvs的使用

kvs 是一个高性能的持久化内存键值存储插件,支持AES256加密。它可以在Flutter应用中用作Map的替代品,并且提供了对数据在静止状态下的加密支持。

特性

  • 在文档目录或提供的目录中进行持久化存储。
  • 支持数据在静止状态下的加密。
  • 可以作为Map的替代品使用。

计划中的特性

  • 使用IndexedDB代替localStorage(目前尚未实现)。

使用方法

初始化存储并添加数据

import 'package:kvs/kvs.dart';
import 'package:kvs/cipher.dart';

void main() async {
  // 创建一个KVS实例,指定存储名称和加密密钥
  var localStorage = KVS<String, int>(
    name: 'storeName',
    cipher: AESGCM256(key: 'mySecretKey'),
  );

  // 初始化存储
  await localStorage.init();

  // 添加单个键值对
  localStorage['year'] = 2023;
  
  // 获取值
  print(localStorage['year']); // 输出: 2023
  
  // 获取当前存储项的数量
  print(localStorage.length); // 输出: 1
  
  // 批量添加键值对
  localStorage.addAll({
    'month': 1,
    'date': 1,
  });
  
  // 再次获取存储项的数量
  print(localStorage.length); // 输出: 3
}

对现有存储添加加密

如果你有一个未加密的存储,并希望为其添加加密功能,可以按照以下步骤操作:

var localStorage = KVS<String, int>(
  name: 'storeName',
);

await localStorage.init();

// 设置加密方式
localStorage.cipher = AESGCM256(key: 'mySecretKey');

// 将更改保存到磁盘
await localStorage.flush();

从现有存储移除加密

如果你想移除现有存储的加密,可以这样做:

var localStorage = KVS<String, int>(
  name: 'storeName',
  cipher: AESGCM256(key: 'mySecretKey'),
);

await localStorage.init();

// 移除加密
localStorage.cipher = null;

// 保存更改
await localStorage.flush();

更改现有存储的加密密钥

如果需要更新现有存储的加密密钥,可以参考以下代码:

var localStorage = KVS<String, int>(
  name: 'storeName',
  cipher: AESGCM256(key: 'oldSecretKey'),
);

await localStorage.init();

// 更新为新的加密密钥
localStorage.cipher = AESGCM256(key: 'newSecretKey');

// 确保更改被保存
await localStorage.flush();

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

1 回复

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


在Flutter中,kvs(Key-Value Store)插件可以用来实现简单的键值存储功能。尽管没有一个广泛认可的名为kvs的官方插件,但我们可以使用shared_preferences插件,这是Flutter社区中广泛使用的键值存储解决方案。

以下是如何在Flutter项目中使用shared_preferences插件的示例代码:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.15  # 请检查最新版本号

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

2. 导入包

在你的Dart文件中(例如main.dart),导入shared_preferences包:

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

3. 使用SharedPreferences

下面是一个完整的示例,展示了如何读取和写入键值对:

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('SharedPreferences Example'),
        ),
        body: SharedPreferencesExample(),
      ),
    );
  }
}

class SharedPreferencesExample extends StatefulWidget {
  @override
  _SharedPreferencesExampleState createState() => _SharedPreferencesExampleState();
}

class _SharedPreferencesExampleState extends State<SharedPreferencesExample> {
  late SharedPreferences _preferences;
  String? _keyOneValue = '';
  String? _keyTwoValue = '';

  @override
  void initState() {
    super.initState();
    _initializePreferences().then((_) {
      // 读取存储的键值对
      setState(() {
        _keyOneValue = _preferences.getString('keyOne');
        _keyTwoValue = _preferences.getString('keyTwo');
      });
    });
  }

  Future<void> _initializePreferences() async {
    _preferences = await SharedPreferences.getInstance();
  }

  Future<void> _saveValues() async {
    await _preferences.setString('keyOne', 'Value One');
    await _preferences.setString('keyTwo', 'Value Two');

    // 更新UI以显示新值
    setState(() {
      _keyOneValue = 'Value One';
      _keyTwoValue = 'Value Two';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          Text('Key One Value: $_keyOneValue'),
          Text('Key Two Value: $_keyTwoValue'),
          SizedBox(height: 20),
          ElevatedButton(
            onPressed: _saveValues,
            child: Text('Save Values'),
          ),
        ],
      ),
    );
  }
}

解释

  1. 添加依赖:在pubspec.yaml中添加shared_preferences依赖。
  2. 导入包:在需要使用SharedPreferences的Dart文件中导入shared_preferences包。
  3. 初始化SharedPreferences实例:在initState方法中调用SharedPreferences.getInstance()来获取SharedPreferences实例。
  4. 读取和写入数据:使用setString方法写入数据,使用getString方法读取数据。
  5. 更新UI:在写入数据后,使用setState方法来更新UI以显示新的键值对。

这个示例展示了如何在Flutter中使用shared_preferences插件进行简单的键值存储操作。如果你需要更复杂的功能,比如加密存储,可能需要考虑其他更高级的存储解决方案。

回到顶部