Utilizzo di setData con merge: true nella nuova API FlutterFire

Sep 10 2020

Sto aggiornando il mio vecchio codice flutter con la nuova API FlutterFire. Utilizzo un setDatacon merge: truein una delle mie funzioni per aggiornare alcuni campi del documento salvati in una mappa. Cambio setDatain set, ma ricevo un errore con il nuovo plug-in FlutterFire che "merge" non è definito. Ho trovato nei documenti di migrazione che

setData / set ora supporta SetOptions per unire dati / campi (in precedenza accettava una mappa)

Il riferimento al documento dice anche:

/// 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);
  }

Nel mio codice originale, sto salvando nuovi valori in un Map<String, dynamic>chiamato changedvaluese quindi usosetData(changedValues, merge:true)

Quindi, come faccio a fornire SetOptions per assicurarmi che l'unione sia vera e che solo i campi in changedValues ​​siano aggiornati nel documento?

Risposte

12 PeterHaddad Sep 10 2020 at 16:57

Devi fare quanto segue:

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