Flutter键值存储插件isar_key_value的使用

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

Flutter键值存储插件isar_key_value的使用

Isar Key Value

Isar Key Value 是基于 Isar 数据库构建的键值存储。

使用方法

首先,创建一个存储实例:

final store = IsarKeyValue();

然后,使用简单的 setget 接口来操作存储。一旦设置了值,可以通过键或 set 方法返回的 ID 来检索该值。

// 设置值并获取返回的ID
final id = await store.set('key', 1);

// 通过键获取值
final valueByKey = await store.get<int>('key');

// 通过ID获取值
final valueById = await store.getById<int>(id);

你也可以指定类型:

// 设置整数值并获取返回的ID
final id = await store.set<int>('key', 1);

// 通过键获取整数值
final valueByKey = await store.get<int>('key');

// 通过ID获取整数值
final valueById = await store.getById<int>(id);

完整示例Demo

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 isar_key_value 插件:

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

void main() async {
  // 初始化存储
  final store = IsarKeyValue();

  // 设置初始值
  await store.set('counter', 0);

  // 运行应用程序
  runApp(MyApp(store: store));
}

class MyApp extends StatelessWidget {
  final IsarKeyValue store;

  const MyApp({required this.store, Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Isar Key Value Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(store: store),
    );
  }
}

class MyHomePage extends StatefulWidget {
  final IsarKeyValue store;

  const MyHomePage({required this.store, Key? key}) : super(key: key);

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

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

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

  Future<void> _loadCounter() async {
    // 从存储中加载计数器的值
    final counter = await widget.store.get<int>('counter');
    setState(() {
      _counter = counter ?? 0;
    });
  }

  Future<void> _incrementCounter() async {
    // 增加计数器的值并保存到存储中
    setState(() {
      _counter++;
    });
    await widget.store.set('counter', _counter);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Isar Key Value Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    // 关闭存储
    widget.store.close(deleteDb: true);
    super.dispose();
  }
}

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

1 回复

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


当然,下面是一个关于如何使用Flutter键值存储插件isar_key_value的代码案例。isar_key_value是一个轻量级的键值存储解决方案,它基于Isar数据库,提供了简单且高效的键值对存储功能。

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

dependencies:
  flutter:
    sdk: flutter
  isar_key_value: ^最新版本号 # 请替换为实际的最新版本号

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

接下来是一个完整的Flutter应用示例,演示如何使用isar_key_value进行键值对的存储和检索:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Isar KeyValue Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late final IsarKeyValue _isarKeyValue;

  @override
  void initState() {
    super.initState();
    // 初始化IsarKeyValue实例
    _isarKeyValue = IsarKeyValue.open();
  }

  @override
  void dispose() {
    // 关闭IsarKeyValue实例
    _isarKeyValue.close();
    super.dispose();
  }

  void _storeKeyValue() async {
    // 存储键值对
    await _isarKeyValue.setItem('key1', 'value1');
    await _isarKeyValue.setItem('key2', 42); // 支持多种数据类型
  }

  void _retrieveKeyValue() async {
    // 检索键值对
    String? value1 = await _isarKeyValue.getItem<String>('key1');
    int? value2 = await _isarKeyValue.getItem<int>('key2');

    // 打印检索到的值
    print('key1: $value1');
    print('key2: $value2');
  }

  void _removeKeyValue() async {
    // 删除键值对
    await _isarKeyValue.removeItem('key1');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Isar KeyValue Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _storeKeyValue,
              child: Text('Store Key-Value'),
            ),
            ElevatedButton(
              onPressed: _retrieveKeyValue,
              child: Text('Retrieve Key-Value'),
            ),
            ElevatedButton(
              onPressed: _removeKeyValue,
              child: Text('Remove Key'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 初始化IsarKeyValue实例:在initState方法中,我们使用IsarKeyValue.open()方法来初始化一个IsarKeyValue实例。
  2. 存储键值对:通过调用_isarKeyValue.setItem方法,我们可以存储不同类型的键值对。
  3. 检索键值对:通过调用_isarKeyValue.getItem<T>方法,我们可以检索存储的键值对。注意,我们需要指定返回值的类型。
  4. 删除键值对:通过调用_isarKeyValue.removeItem方法,我们可以删除指定的键值对。
  5. 关闭IsarKeyValue实例:在dispose方法中,我们调用_isarKeyValue.close()方法来关闭IsarKeyValue实例,以释放资源。

这个示例展示了如何使用isar_key_value插件进行基本的键值存储操作。根据你的需求,你可以进一步扩展这个示例,比如处理错误、批量操作等。

回到顶部