一、realm的安装
1、常规操作创建一个新demo项目
flutter create realm_demo
cd realm_demo
2、运行一下命令安装realm库
flutter pub add realm
运行正常的话会在pubspec.yaml文件中看到已经安装成功,我安装的版本为1.0.2。
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
realm: ^1.0.2
二、realm的使用
1、创建model类
这里以car为例,创建model文件 car.dart,创建完成后在car.dart内编写model
import 'package:realm/realm.dart';
part 'car.g.dart';//后续用命令生成文件
@RealmModel()
class _Car {
@PrimaryKey()
late ObjectId id;
late String make;
late String? model;
late int? miles;
//tip: Class names are limited to a maximum of 57 UTF-8 characters.
}
此时由于car.g.dart文件还没有创建,所以part 'car.g.dart'此时报错,接下来执行下面代码让realm自动生成car.g.dart文件
flutter pub run realm generate
等待命令执行完毕后 Car的model已经创建完毕。
realm的打开
final config = Configuration.local([Car.schema]);
final realm = Realm(config);
关闭
realm.close();
2、realm的增删改查
1.增
final car = Car(ObjectId(),'Tesla', model: 'Model S', miles: 42);
realm.write((){
realm.add(car);
});
2.查
final cars = realm.all<Car>();
//final cars = realm.query<Car>('make == "Tesla"');
if(cars.length==0){
print("暂无数据");
return;
}
final myCar = cars[0];
print('My car is ${myCar.make} ${myCar.model}');
可以使用sort对结果进行排序 参考文档
realm.write(() {
realm.addAll([
Person(ObjectId(), 'Luke'),
Person(ObjectId(), 'Leia'),
Person(ObjectId(), 'Han'),
Person(ObjectId(), 'Chewbacca')
]);
});
final alphabetizedPeople =
realm.query<Person>('TRUEPREDICATE SORT(name ASC)');
for (var person in alphabetizedPeople) {
print(person.name);
}
// prints 'Chewbacca', 'Han', 'Leia', 'Luke'
3.改
realm.write(() {
myCar.miles = 99;
});
4.删
realm.write((){
realm.delete(myCar);
});