Orientação gerada a partir de informações públicas. Apenas para referência.
Realm Generator é uma ferramenta de geração de código que cria automaticamente classes RealmObject a partir das suas definições de modelo de dados Realm em projetos Flutter e Dart. Faz parte do SDK oficial do Realm, simplificando a gestão do esquema do banco de dados ao gerar classes seguras por tipo e otimizadas para trabalhar com o armazenamento persistente do Realm. O gerador garante a consistência entre os modelos e a estrutura subjacente do banco de dados, reduzindo o código repetitivo e minimizando erros em tempo de execução. Ele se integra perfeitamente ao processo de build por meio do sistema pub do Flutter.
Casos de uso
Gerar automaticamente classes RealmObject a partir de modelos de dados
Simplifique a definição do esquema do banco de dados em aplicativos Flutter
Reduza a codificação manual de classes de dados persistentes
Garanta a segurança de tipo no acesso a dados baseado em Realm
Apoiar relacionamentos complexos de objetos em bancos de dados Realm
Principais recursos
Gera classes RealmObject a partir de definições de modelo
Integra-se com o sistema de compilação do Flutter
Produz código seguro e otimizado por tipo
Suporta objetos aninhados e relacionamentos
Impõe consistência de esquema em tempo de compilação
Indicado para
Desenvolvedores Flutter usando Realm para persistência local
Projetos que exigem tipagem forte e desempenho no armazenamento de dados
Equipes que desejam minimizar o código boilerplate nos modelos de banco de dados
Aplicativos com estruturas de dados complexas que precisam de gerenciamento confiável de esquema
Considerações
Requer o uso do SDK do Realm
Necessita de configuração adequada no pubspec.yaml
Dependência de tempo de compilação; não disponível em tempo de execução
Pode exigir configuração adicional para campos personalizados
Limitado à abordagem de modelagem de dados específica do Reino
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
[!WARNING]
We announced the deprecation of Atlas Device Sync + Realm SDKs in September 2024. For more information please see:
For a version of realm-dart without sync features, install version 20 or see the community branch.
Realm is a mobile database that runs directly inside phones, tablets or wearables.
This repository holds the source code for the Realm SDK for Flutter™ and Dart™.
Features
Mobile-first: Realm is the first database built from the ground up to run directly inside phones, tablets, and wearables.
Simple: Realm’s object-oriented data model is simple to learn, doesn’t need an ORM, and the API lets you write less code to get apps up & running in minutes.
Modern: Realm supports latest Dart and Flutter versions and is built with sound null-safety.
Fast: Realm is faster than even raw SQLite on common operations while maintaining an extremely rich feature set.
import'package:realm/realm.dart'; // import realm packagepart'app.realm.dart'; // declare a part file.@RealmModel() // define a data model class named `_Car`.class_Car{
lateString make;
lateString model;
int? kilometers = 500;
}
Generate RealmObject class Car from data model class _Car.
dart run realm generate
Open a Realm and add some objects.
var config = Configuration.local([Car.schema]);
var realm = Realm(config);
var car = Car("Tesla", "Model Y", kilometers: 5);
realm.write(() {
realm.add(car);
});
Query objects in Realm.
var cars = realm.all<Car>();
Car myCar = cars[0];
print("My car is ${myCar.make} model ${myCar.model}");
cars = realm.all<Car>().query("make == 'Tesla'");
Generate RealmObject class Item from data model class _Item.
On Flutter use dart run realm to run realm package commands
dart run realm generate
A new file catalog.realm.dart will be created next to the catalog.dart.
*The generated file should be committed to source control
Use the RealmObject class Item with Realm.
// Create a Configuration objectvar config = Configuration.local([Item.schema]);
// Opean a Realmvar realm = Realm(config);
var myItem = Item(0, 'Pen', price: 4);
// Open a write transaction
realm.write(() {
realm.add(myItem);
var item = realm.add(Item(1, 'Pencil')..price = 20);
});
// Objects `myItem` and `item` are now managed and persisted in the realm// Read object properties from realmprint(myItem.name);
print(myItem.price);
// Update object properties
realm.write(() {
myItem.price = 20;
myItem.name = "Special Pencil";
});
// Get objects from the realm// Get all objects of typevar items = realm.all<Item>();
// Get object by indexvar item = items[1];
// Get object by primary keyvar itemByKey = realm.find<Item>(0);
// Filter and sort objectvar objects = realm.query<Item>("name == 'Special Pencil'");
var name = 'Pen';
objects = realm.query<Item>(r'name == $0', [name]);
// Close the realm
realm.close();
Full contents of catalog.dart
import'package:realm/realm.dart';
part'catalog.realm.dart';
@RealmModel()
class_Item{
@PrimaryKey()
lateint id;
lateString name;
int price = 42;
}
// Create a Configuration objectvar config = Configuration.local([Item.schema]);
// Open a Realmvar realm = Realm(config);
var myItem = Item(0, 'Pen', price: 4);
// Open a write transaction
realm.write(() {
realm.add(myItem);
var item = realm.add(Item(1, 'Pencil')..price = 20);
});
// Objects `myItem` and `item` are now managed and persisted in the realm// Read object properties from realmprint(myItem.name);
print(myItem.price);
// Update object properties
realm.write(() {
myItem.price = 20;
myItem.name = "Special Pencil";
});
// Get objects from the realm// Get all objects of typevar items = realm.all<Item>();
// Get object by indexvar item = items[1];
// Get object by primary keyvar itemByKey = realm.find<Item>(0);
// Filter and sort objectvar objects = realm.query<Item>("name == 'Special Pencil'");
var name = 'Pen';
objects = realm.query<Item>(r'name == $0', [name]);
// Close the realm
realm.close();
Initialize the App Services App client and authenticate a user.
String appId = "<Atlas App ID>";
final appConfig = AppConfiguration(appId);
final app = App(appConfig);
final user = await app.logIn(Credentials.anonymous());
Open a synced realm.
final config = Configuration.flexibleSync(user, [Task.schema]);
final realm = Realm(config);
Add a sync subscription and write data.
Only data matching the query in the subscription will be synced to the server and only data matching the subscription will be downloaded to the local device realm file.
realm.subscriptions.update((mutableSubscriptions) {
mutableSubscriptions.add(realm.query<Task>(r'status == $0 AND progressMinutes == $1', ["completed", 100]));
});
await realm.subscriptions.waitForSynchronization();
realm.write(() {
realm.add(Task(ObjectId(), "Send an email", "completed", 4));
realm.add(Task(ObjectId(), "Create a meeting", "completed", 100));
realm.add(Task(ObjectId(), "Call the manager", "init", 2));
});
realm.close();
See CONTRIBUTING.md for instructions about building the source.
Code of Conduct
This project adheres to the MongoDB Code of Conduct.
By participating, you are expected to uphold this code. Please report
unacceptable behavior to [community-conduct@mongodb.com](mailto:community-conduct@mongodb.com).
License
Realm Flutter and Dart SDKs and Realm Core are published under the Apache License 2.0.
The "Dart" name and logo and the "Flutter" name and logo are trademarks owned by Google.