不断向Map中添加数据
Continuously add data to Map
我需要在 for...循环之前将数据添加到 Map 或 HashMap,在 for...循环期间将数据添加到 Map,然后在循环之后使用所有数据创建文档。
在 Java 中 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,然后 update/merge 它与其余数据一起使用?或者有没有办法将数据添加到 Dart 中的地图?
我在 Dart 中发现的唯一东西是:
Map<String, Object> stuff = {'title': title, 'type': type};
并在 for... 循环中:
stuff = {'docRef $x': docId};
在for...循环之后:
Firestore.instance.collection('workouts').add(stuff);
它创建的文档仅包含来自 for... 循环的最后一个条目。
我也导入了dart:collection来使用HashMap,但是它不让我使用
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 and collection literals,所以我们可以对两者使用更short-hand 的语法。让我们从上面写出完全相同的东西,但多了一些 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];
}
好的,这样更好,但仍然没有使用 Dart 提供的所有功能。我们可以使用 map literal 而不是多写两行代码,我们甚至可以使用 string interpolation:
var createDoc = {
'type': type,
'title': title,
};
for (var x = 0; x < sArray.length; x++) {
createDoc['data$x'] = sArray[x];
}
I also imported dart:collection to use HashMap, but it won't let me
use
Map<String, Object> newMap = new HashMap<>(); I get the error: `"A value of type 'HashMap' can't be assigned to a variable of type
'Map'`"
Dart 中没有这样的语法new HashMap<>
。类型推断没有它也能工作,所以你可以只写 Map<String, Object> map = new HashMap()
,或者像我上面的例子,var map = <String, Object> {}
,甚至更好,var map = { 'type': type }
,它将根据键为你键入映射和价值。
希望对您有所帮助!
我需要在 for...循环之前将数据添加到 Map 或 HashMap,在 for...循环期间将数据添加到 Map,然后在循环之后使用所有数据创建文档。
在 Java 中 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,然后 update/merge 它与其余数据一起使用?或者有没有办法将数据添加到 Dart 中的地图?
我在 Dart 中发现的唯一东西是:
Map<String, Object> stuff = {'title': title, 'type': type};
并在 for... 循环中:
stuff = {'docRef $x': docId};
在for...循环之后:
Firestore.instance.collection('workouts').add(stuff);
它创建的文档仅包含来自 for... 循环的最后一个条目。
我也导入了dart:collection来使用HashMap,但是它不让我使用
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 and collection literals,所以我们可以对两者使用更short-hand 的语法。让我们从上面写出完全相同的东西,但多了一些 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];
}
好的,这样更好,但仍然没有使用 Dart 提供的所有功能。我们可以使用 map literal 而不是多写两行代码,我们甚至可以使用 string interpolation:
var createDoc = {
'type': type,
'title': title,
};
for (var x = 0; x < sArray.length; x++) {
createDoc['data$x'] = sArray[x];
}
I also imported dart:collection to use HashMap, but it won't let me use
Map<String, Object> newMap = new HashMap<>(); I get the error: `"A value of type 'HashMap' can't be assigned to a variable of type
'Map'`"
Dart 中没有这样的语法new HashMap<>
。类型推断没有它也能工作,所以你可以只写 Map<String, Object> map = new HashMap()
,或者像我上面的例子,var map = <String, Object> {}
,甚至更好,var map = { 'type': type }
,它将根据键为你键入映射和价值。
希望对您有所帮助!