Anotações da propriedade - SDK Flutter
Nesta página
Você pode usar anotações para adicionar funcionalidade às propriedades em seus modelos de objeto do Realm.
Propriedades obrigatórias e opcionais
No Dart, os tipos de valor são implicitamente não anuláveis, mas podem ser tornados opcionais (anuláveis) anexando?. Inclua ?
para tornar as propriedades opcionais.
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
Valores de campo padrão
Você pode usar as funcionalidades de idioma embutidas para atribuir um valor padrão para uma propriedade. Atribua um valor padrão na declaração de propriedade.
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
Chaves primárias
A anotação PrimaryKey indica uma propriedade de chave primária. A chave primária é um identificador exclusivo para um objeto em um domínio. Nenhum outro objeto do mesmo tipo pode compartilhar a chave primária de um objeto.
Aspectos importantes das chaves primárias:
Não é possível alterar uma chave primária depois de adicionar um objeto a um realm.
Adicione apenas uma chave primária a uma propriedade em um RealmModel.
Apenas tipos
String
,int
,ObjectId
eUuid
podem ser chaves primárias.O Realm indexa automaticamente as chaves primárias.
As chaves primárias são anuláveis.
null
só pode ser a chave primária de um objeto em uma coleção.
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
Mapear uma propriedade ou classe para um nome diferente
A anotação MapTo indica que um modelo ou propriedade deve ser mantido com um nome diferente. É útil ao abrir um Realm em diferentes vinculações, onde as convenções de estilo de código podem ser diferentes. Por exemplo:
Para facilitar o trabalho em plataformas onde as convenções de nomenclatura são diferentes. Por exemplo, se os nomes das propriedades do esquema Device Sync usarem snake case, enquanto seu projeto usa camel case.
Para alterar um nome de campo ou classe sem forçar uma migração.
()'naval_ship') (class _Boat { () late ObjectId id; late String name; late int? maxKnots; late int? nauticalMiles; }
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
Ignorar propriedades do esquema do Realm
Se você adicionar os Ignorados anotação a uma propriedade em seu RealmModel
, o gerador de objetos de domínio não inclui a propriedade no RealmObject
esquema nem persiste no Realm.
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
Propriedades do índice
Adicione o indexado anotação para criar um índice no campo. Os índices podem acelerar muito algumas queries ao custo de tempos de gravação um pouco mais lentos e sobrecarga adicional de armazenamento e memória. Realm armazena índices no disco, o que torna seus arquivos de domínio maiores. Cada entrada do índice tem um mínimo de 12 bytes. Os índices podem ser anuláveis.
Os seguintes tipos de dados podem ser indexados:
bool
int
String
ObjectId
Uuid
DateTime
RealmValue
class _Vehicle { () late ObjectId id; late String? maybeDescription; // optional value late double milesTravelled = 0; // 0 is default value () late String notInRealmModel; () late String make; 'wheels') // 'wheels' is property name in the RealmObject ( late int numberOfWheels; }
Índices de pesquisa de texto completo
Além dos índices padrão, o Realm também suporta índices de Pesquisa de Texto Completo (FTS) em propriedades de string. Embora você possa query um campo de string com ou sem um índice padrão, um índice FTS permite pesquisar várias palavras e frases e excluir outras.
Para obter mais informações sobre como fazer queries em índices FTS, consulte Filtrar com Full Text Search.
Para criar um índice FTS em uma propriedade, use o @Indexado e especifique o RealmIndexType como fullText
. Isso permite queries de texto completo na propriedade. No exemplo a seguir, marcamos o padrão e as propriedades do material com a anotação FTS:
()class _Rug { () late ObjectId id; (RealmIndexType.fullText) late String pattern; (RealmIndexType.fullText) late String material; late int softness; }