CRUD - Atualização - Flutter SDK
As atualizações de RealmObjects
devem ocorrer na transação de escrita. Para obter mais informações sobre transações de gravação, consulte: Transações de gravação.
O SDK suporta operações de atualização e upsert. Uma operação upsert insere uma nova instância de um objeto ou atualiza um objeto existente que atende a determinados critérios. Para obter mais informações, consulte a seção Atualizar objetos nesta página.
Você não pode atualizar objetos assimétricos. Isso ocorre porque objetos assimétricos são objetos especiais somente para gravação que não persistem no reconhecimento de data center. Para obter informações sobre como usar objetos assimétricos em seu aplicativo, consulte Transmitir dados para o Atlas - Flutter SDK</a>.
Atualizar objetos
Os exemplos nesta página usam dois tipos de objeto, Person
e Team
.
()class _Person { () late ObjectId id; late String name; late List<String> hobbies; } ()class _Team { () late ObjectId id; late String name; late List<_Person> crew; late RealmValue eventLog; }
Atualizar propriedades do objeto
Para modificar as propriedades de um objeto, atualize as propriedades em um bloco de transação de escrita.
realm.write(() { spaceshipTeam.name = 'Galactic Republic Scout Team'; spaceshipTeam.crew .addAll([Person(ObjectId(), 'Luke'), Person(ObjectId(), 'Leia')]); });
Objetos do Upsert
Para atualizar um objeto, chame Realm.add() com o update
sinalizador opcional definido como true
dentro de um bloco de transação. A operação insere um novo objeto com a chave primária fornecida se um objeto com essa chave primária não existir. Se já houver um objeto com essa chave primária, a operação atualizará o objeto existente para essa chave primária.
final id = ObjectId(); // Add Anakin Skywalker to the realm with primary key `id` final anakin = Person( id, "Anakin Skywalker", ); realm.write(() { realm.add<Person>(anakin); }); // Overwrite the 'Anakin' Person object // with a new 'Darth Vader' object final darthVader = Person(id, 'Darth Vader'); realm.write(() { realm.add<Person>(darthVader, update: true); });