Flutter中如何使用isar数据库

在Flutter项目中想要使用isar数据库,但不太清楚具体操作步骤。请问:

  1. 如何添加isar依赖到pubspec.yaml文件?
  2. 怎样初始化isar数据库并创建模型类?
  3. 常用的CRUD操作(增删改查)该如何实现?
  4. isar支持哪些查询条件和排序方式?
  5. 在使用过程中有哪些性能优化建议或需要注意的坑?

目前按照官方文档操作遇到了一些问题,希望能得到详细的代码示例和使用经验分享。

2 回复

在Flutter中使用Isar数据库,首先添加依赖:isarisar_flutter_libs。初始化Isar实例,定义数据模型并注解@Collection()。使用Isar.open()打开数据库,通过.isar文件生成模型代码。支持增删改查操作,如isar.writeTxn()进行事务处理。

更多关于Flutter中如何使用isar数据库的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用Isar数据库的步骤如下:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  isar: ^3.1.0
  isar_flutter_libs: ^3.1.0

dev_dependencies:
  isar_generator: ^3.1.0
  build_runner: ^2.3.0

2. 创建数据模型

使用注解定义模型:

part 'user.g.dart';

@collection
class User {
  Id id = Isar.autoIncrement;
  
  String? name;
  int? age;
}

3. 生成代码

运行命令生成适配代码:

flutter pub run build_runner build

4. 初始化Isar

final isar = await Isar.open(
  [UserSchema],
  directory: await getApplicationDocumentsDirectory(),
);

5. 基本操作

写入数据:

final user = User()
  ..name = 'John'
  ..age = 25;

await isar.writeTxn(() async {
  await isar.users.put(user);
});

查询数据:

final users = await isar.users.where().findAll();
final john = await isar.users.filter().nameEqualTo('John').findFirst();

更新数据:

await isar.writeTxn(() async {
  john!.age = 26;
  await isar.users.put(john);
});

删除数据:

await isar.writeTxn(() async {
  await isar.users.delete(john!.id);
});

6. 高级功能

  • 支持索引查询
  • 数据监听(Watch)
  • 事务操作
  • 链接查询

注意事项:

  • 所有写操作必须在事务中执行
  • 支持Web平台(需额外配置)
  • 支持复杂数据类型和关系

建议查看官方文档获取最新特性和详细用法。

回到顶部