Utilisation de setData avec merge: true dans la nouvelle API FlutterFire

Sep 10 2020

Je mets à jour mon ancien code Flutter avec la nouvelle API FlutterFire. J'utilise un setDataavec merge: truedans l'une de mes fonctions pour mettre à jour certains champs de document qui sont enregistrés dans une carte. Je change setDataen set, mais j'obtiens une erreur avec le nouveau plugin FlutterFire qui "merge" n'est pas défini. J'ai trouvé dans les documents sur la migration que

setData / set prend désormais en charge SetOptions pour fusionner les données / champs (auparavant, cela acceptait une carte)

La référence du document dit également:

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

Dans mon code d'origine, j'enregistre de nouvelles valeurs dans un Map<String, dynamic>appelé changedvalues, puis j'utilisesetData(changedValues, merge:true)

Alors, comment puis-je fournir SetOptions pour m'assurer que la fusion est vraie et que seuls les champs des changesValues ​​sont mis à jour dans le document?

Réponses

12 PeterHaddad Sep 10 2020 at 16:57

Vous devez faire ce qui suit:

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