Flutter如何使用Isar数据库

在Flutter项目中集成Isar数据库时遇到几个问题:

  1. 如何正确添加isar和isar_flutter_libs依赖?pubspec.yaml配置总报错
  2. 模型类是否需要手动添加@Collection注解?为什么自动生成代码不生效
  3. 查询数据时.where().findAll()返回空列表,但数据库确认有数据
  4. 多实体关联查询应该用Links还是嵌入式对象?官方文档案例太少
  5. 观察到Isar Inspector连接后不显示数据,是本地调试的常见问题吗?
    求实际项目中使用过的经验分享,最好能提供完整操作流程示例

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

2 回复

Flutter使用Isar数据库需先添加依赖:isarisar_flutter_libs。创建数据模型并标注@Collection(),运行flutter pub run build_runner build生成代码。初始化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;
  
  late String name;
  late 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().filter().ageGreaterThan(20).findAll();

更新数据:

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

删除数据:

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

6. 高级功能

  • 支持索引查询
  • 支持懒加载
  • 支持数据监听
  • 支持事务操作

注意事项:

  • 所有写操作必须在事务中执行
  • 查询操作支持链式调用
  • 记得在pubspec.yaml中配置assets(如需预填充数据库)

这是Isar的基本使用方法,具体可参考官方文档获取更详细的功能说明。

回到顶部