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>'
"
前もって感謝します!
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 inference と collection 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 }
_を書くと、キーと値。
それがお役に立てば幸いです!