Dictionary 不断向地图添加数据

Dictionary 不断向地图添加数据,dictionary,hashmap,dart,google-cloud-firestore,flutter,Dictionary,Hashmap,Dart,Google Cloud Firestore,Flutter,我需要在for…循环之前向Map或HashMap添加数据,在for…循环期间向Map添加数据,然后在循环之后创建包含所有数据的文档 在Java for Android中,我使用了: Map<String, Object> createDoc = new HashMap<>(); createDoc.put("type", type); createDoc.put("title", title); for (int x = 0; x < sArray.

我需要在for…循环之前向Map或HashMap添加数据,在for…循环期间向Map添加数据,然后在循环之后创建包含所有数据的文档

在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);
在for…循环之后:

stuff = {'docRef $x': docId};
Firestore.instance.collection('workouts').add(stuff);
它仅使用for…循环中的最后一个条目创建文档

我还导入了dart:collection以使用HashMap,但它不允许我使用

Map<String, Object> newMap = new HashMap<>();
Map newMap=newhashmap();
我收到错误:
“无法将'HashMap'类型的值分配给'Map'类型的变量。


提前谢谢你

与您在Java中编写的Dart等效的代码块是:

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];
}
Map createDoc=new HashMap();
createDoc['type']=类型;
createDoc['title']=标题;
对于(int x=0;x
当然,Dart有and,因此我们可以对两者使用更为简捷的语法。让我们从上面写出完全相同的东西,但使用更多的Dart(2)成语:

var createDoc={};
createDoc['type']=类型;
createDoc['title']=标题;
对于(var x=0;x
好的,这更好,但仍然没有使用Dart提供的所有功能。我们可以使用map literal,而不是再编写两行代码,我们甚至可以使用:

var createDoc={
“类型”:类型,
“标题”:标题,
};
对于(var x=0;x

我还导入了dart:collection以使用HashMap,但它不允许我使用它 使用

Map newMap=newhashmap();我得到错误:`“HashMap”类型的值无法分配给类型为的变量
“地图”`”

Dart中没有这种语法
newhashmap
。类型推断在没有它的情况下工作,因此您可以只编写
Map Map=new HashMap()
,或者像我上面的示例那样,
var-Map={}
,或者更好的是,
var-Map={'Type':Type}
,它将根据键和值为您键入映射


我希望这有帮助

感谢您展示了不同的方法来做到这一点!我很感激,这将有助于向前发展。小心使用var!如果
类型
标题
是同一类型,则创建的地图将仅指定为该类型。改为使用
Map createDoc={/*init Map*/}
,以便能够在进一步的处理中使用任何类型作为数据
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];
}
var createDoc = <String, Object>{};
createDoc['type'] = type;
createDoc['title'] = title;
for (var x = 0; x < sArray.length; x++) {
  createDoc['data' + x] = sArray[x];
}
var createDoc = {
  'type': type,
  'title': title,
};
for (var x = 0; x < sArray.length; x++) {
  createDoc['data$x'] = sArray[x];
}
Map<String, Object> newMap = new HashMap<>(); I get the error: `"A value of type 'HashMap' can't be assigned to a variable of type