web-dev-qa-db-ja.com

データを継続的にマップに追加する

For ... loopの前にMapまたはHashMapにデータを追加し、for ... loopの間にMapにデータを追加してから、ループ後のすべてのデータを使用してドキュメントを作成する必要があります。

In Java for Android私が使用したもの:

Map<String, Object> createDoc = new HashMap<>();
    createDoc.put("type", type);
    createDoc.put("title", title);
for (int x = 0; x < sArray.size(); x++) {
    createDoc.put("data " + x,sArray.get(x));
}
firebaseFirestoreDb.collection("WPS").add(createDoc);

私の質問は、どのようにドキュメントを作成し、すぐにドキュメントのIDを取得して、残りのデータで更新/マージするのですか?または、Dartのマップにデータを追加する方法はありますか?

Dartで私が見つけた唯一のものは:

Map<String, Object> stuff = {'title': title, 'type': type};

そしてfor ...ループ内:

stuff = {'docRef $x': docId};

そしてfor ...ループの後:

Firestore.instance.collection('workouts').add(stuff);

これにより、for ... loopの最後のエントリのみを含むドキュメントが作成されます。

また、HashMapを使用するためにDart:collectionをインポートしましたが、使用できません

Map<String, Object> newMap = new HashMap<>();

エラーが表示されます:"A value of type 'HashMap' can't be assigned to a variable of type 'Map<String, Object>' "

前もって感謝します!

5
r3ck3z57

Dart用にJavaで記述したものと同等のコードブロックは次のとおりです。

_Map<String, Object> createDoc = new HashMap();
createDoc['type'] = type;
createDoc['title'] = title;
for (int x = 0; x < sArray.length; x++) {
  createDoc['data' + x] = sArray[x];
}
_

もちろん、Dartには type inferencecollection literals があります。そのため、両方にもっと簡潔な構文を使用できます。上記とまったく同じことを書きましょう。ただし、さらにDart(2)イディオムを使用します。

_var createDoc = <String, Object>{};
createDoc['type'] = type;
createDoc['title'] = title;
for (var x = 0; x < sArray.length; x++) {
  createDoc['data' + x] = sArray[x];
}
_

OK、それは良いですが、それでもDartが提供するすべてを使用しているわけではありません。さらに2行のコードを記述する代わりに、マップリテラルを使用できます。さらに、 文字列補間 を使用することもできます。

_var createDoc = {
  'type': type,
  'title': title,
};
for (var x = 0; x < sArray.length; x++) {
  createDoc['data$x'] = sArray[x];
}
_

また、HashMapを使用するためにDart:collectionをインポートしましたが、使用できません

_Map<String, Object> newMap = new HashMap<>(); I get the error: `"A value of type 'HashMap' can't be assigned to a variable of type
_

「地図」 `"

Dartにはそのような構文_new HashMap<>_はありません。型推論はそれなしでも機能するため、Map<String, Object> map = new HashMap()を書くか、上記の例のように_var map = <String, Object> {}_を書くか、さらに良いことに_var map = { 'type': type }_を書くと、キーと値。

それがお役に立てば幸いです!

15
matanlurey