Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ / /

Anotações da propriedade - SDK Flutter

Nesta página

  • Propriedades obrigatórias e opcionais
  • Valores de campo padrão
  • Chaves primárias
  • Mapear uma propriedade ou classe para um nome diferente
  • Ignorar propriedades do esquema do Realm
  • Propriedades do índice
  • Índices de pesquisa de texto completo

Você pode usar anotações para adicionar funcionalidade às propriedades em seus modelos de objeto do Realm.

In Dart, value types are implicitly non-nullable, but can be made optional (nullable) by appending ?. Include ? to make properties optional.

class _Vehicle {
@PrimaryKey()
late ObjectId id;
late String? maybeDescription; // optional value
late double milesTravelled = 0; // 0 is default value
@Ignored()
late String notInRealmModel;
@Indexed()
late String make;
@MapTo('wheels') // 'wheels' is property name in the RealmObject
late int numberOfWheels;
}

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 {
@PrimaryKey()
late ObjectId id;
late String? maybeDescription; // optional value
late double milesTravelled = 0; // 0 is default value
@Ignored()
late String notInRealmModel;
@Indexed()
late String make;
@MapTo('wheels') // 'wheels' is property name in the RealmObject
late int numberOfWheels;
}

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 e Uuid 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 {
@PrimaryKey()
late ObjectId id;
late String? maybeDescription; // optional value
late double milesTravelled = 0; // 0 is default value
@Ignored()
late String notInRealmModel;
@Indexed()
late String make;
@MapTo('wheels') // 'wheels' is property name in the RealmObject
late int numberOfWheels;
}

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.

@RealmModel()
@MapTo('naval_ship')
class _Boat {
@PrimaryKey()
late ObjectId id;
late String name;
late int? maxKnots;
late int? nauticalMiles;
}
class _Vehicle {
@PrimaryKey()
late ObjectId id;
late String? maybeDescription; // optional value
late double milesTravelled = 0; // 0 is default value
@Ignored()
late String notInRealmModel;
@Indexed()
late String make;
@MapTo('wheels') // 'wheels' is property name in the RealmObject
late int numberOfWheels;
}

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 {
@PrimaryKey()
late ObjectId id;
late String? maybeDescription; // optional value
late double milesTravelled = 0; // 0 is default value
@Ignored()
late String notInRealmModel;
@Indexed()
late String make;
@MapTo('wheels') // 'wheels' is property name in the RealmObject
late int numberOfWheels;
}

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 {
@PrimaryKey()
late ObjectId id;
late String? maybeDescription; // optional value
late double milesTravelled = 0; // 0 is default value
@Ignored()
late String notInRealmModel;
@Indexed()
late String make;
@MapTo('wheels') // 'wheels' is property name in the RealmObject
late int numberOfWheels;
}

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:

@RealmModel()
class _Rug {
@PrimaryKey()
late ObjectId id;
@Indexed(RealmIndexType.fullText)
late String pattern;
@Indexed(RealmIndexType.fullText)
late String material;
late int softness;
}

Voltar

Relacionamentos

Próximo

Atualizar um esquema de objeto de Realm