Flutter教程Realm本地数据库使用

如何在Flutter中集成Realm本地数据库?有没有完整的配置步骤和依赖添加示例?

使用Realm时遇到Schema模型定义问题,官方文档不太清晰,能否提供一个简单的Dart模型定义范例?

Realm的查询操作和常规SQLite有什么区别?比如如何实现条件查询、排序和分页?

在多线程环境下操作Realm需要注意什么?是否支持异步读写?

Realm数据库文件能否加密?如何实现敏感数据的本地安全存储?

升级App时需要迁移Realm数据库结构,有没有可靠的迁移方案或工具推荐?

3 回复

首先在pubspec.yaml中添加realm依赖:

dependencies:
  realm: ^x.x.x

接着运行flutter pub get安装。

使用时先创建Realm配置对象:

final config = Configuration.local([YourSchema]);

然后打开Realm实例:

final realm = Realm(config);

定义数据模型Schema:

@RealmModel()
class _YourSchema {
  @PrimaryKey()
  late ObjectId id;
  late String name;
}

插入数据:

realm.write(() {
  realm.create<_YourSchema>('YourSchema', _YourSchema()..name = 'Test');
});

查询数据:

final results = realm.all<_YourSchema>();
for (var item in results) {
  print(item.name);
}

更新数据:

realm.write(() {
  final obj = realm.find<_YourSchema>(ObjectId.fromHexString('id'));
  if (obj != null) {
    obj.name = 'Updated Name';
  }
});

删除数据:

realm.write(() {
  final obj = realm.find<_YourSchema>(ObjectId.fromHexString('id'));
  if (obj != null) {
    realm.delete(obj);
  }
});

最后别忘了关闭Realm实例:

realm.close();

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


在Flutter中使用Realm本地数据库,首先需要添加依赖realm_flutter。在pubspec.yaml中加入:

dependencies:
  realm_flutter: ^<最新版本>

运行flutter pub get

初始化Realm:

import 'package:realm/realm.dart';

final config = Configuration.local([YourSchema.schema]);
final realm = Realm(config);

创建数据模型时,使用@RealmModel()注解:

@RealmModel()
class _YourSchema {
  @PrimaryKey()
  late String id;
  late String name;
}

增删改查操作如下:

  • 添加数据:realm.write(() => realm.add(YourSchema({'id': '1', 'name': 'John'})));
  • 查询数据:final results = realm.all<YourSchema>();
  • 更新数据:realm.write(() => results[0].name = 'Doe');
  • 删除数据:realm.write(() => realm.delete(results));

记得处理异常并关闭Realm实例。Realm提供高效的数据同步和灵活的查询API,适合中小型应用。

Flutter中使用Realm本地数据库

Realm是一个高性能的移动端数据库解决方案,适合Flutter应用作为本地数据库使用。以下是基本使用指南:

1. 添加依赖

pubspec.yaml中添加:

dependencies:
  realm: ^[最新版本]

2. 定义数据模型

import 'package:realm/realm.dart';

part 'car.realm.dart';

@RealmModel()
class _Car {
  @PrimaryKey()
  late String id;
  
  late String make;
  late String model;
  int? miles;
}

运行构建命令生成模型代码:

flutter pub run build_runner build

3. 初始化Realm

final config = Configuration.local([Car.schema]);
final realm = Realm(config);

4. 基本CRUD操作

创建(Create):

realm.write(() {
  realm.add(Car(ObjectId(), 'Toyota', 'Camry', miles: 1000));
});

查询(Read):

final cars = realm.all<Car>();
final toyotas = realm.query<Car>('make == "Toyota"');

更新(Update):

realm.write(() {
  car.miles = 1500;
});

删除(Delete):

realm.write(() {
  realm.delete(car);
});

5. 关闭Realm

realm.close();

高级功能

  • 支持数据变更监听
  • 支持数据迁移
  • 支持加密
  • 支持同步(需要Realm云服务)

建议查看官方文档获取更详细的信息和最佳实践。

回到顶部