Flutter如何使用Isar数据库
在Flutter项目中集成Isar数据库时遇到几个问题:
- 如何正确添加isar和isar_flutter_libs依赖?pubspec.yaml配置总报错
- 模型类是否需要手动添加@Collection注解?为什么自动生成代码不生效
- 查询数据时.where().findAll()返回空列表,但数据库确认有数据
- 多实体关联查询应该用Links还是嵌入式对象?官方文档案例太少
- 观察到Isar Inspector连接后不显示数据,是本地调试的常见问题吗?
求实际项目中使用过的经验分享,最好能提供完整操作流程示例
更多关于Flutter如何使用Isar数据库的实战教程也可以访问 https://www.itying.com/category-92-b0.html
2 回复
Flutter使用Isar数据库需先添加依赖:isar和isar_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的基本使用方法,具体可参考官方文档获取更详细的功能说明。

