Usando setData com merge: true na nova API FlutterFire

Sep 10 2020

Estou atualizando meu antigo código de flutter com a nova API FlutterFire. Eu uso um setDatacom merge: trueem uma de minhas funções para atualizar alguns campos do documento que são salvos em um mapa. Eu mudo setDatapara set, mas recebo um erro com o novo plugin FlutterFire que "mesclar" não está definido. Eu encontrei nos documentos de migração que

setData / set agora suporta SetOptions para mesclar dados / campos (anteriormente, este aceitava um mapa)

A referência do documento também diz:

/// If [SetOptions] are provided, the data will be merged into an existing


/// document instead of overwriting.
  Future<void> set(Map<String, dynamic> data, [SetOptions options]) {
    assert(data != null);
    return _delegate.set(
        _CodecUtility.replaceValueWithDelegatesInMap(data), options);
  }

No meu código original, estou salvando novos valores em um Map<String, dynamic>chamado changedvaluese, em seguida, usosetData(changedValues, merge:true)

Então, como eu forneço SetOptions para garantir que a mesclagem seja verdadeira e apenas os campos nos valores alterados sejam atualizados no documento?

Respostas

12 PeterHaddad Sep 10 2020 at 16:57

Você deve fazer o seguinte:

set({"name" : "akbarB"}, SetOptions(merge : true))