不断向Map添加数据

2024-04-12

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

在 Android 的 Java 中我使用了:

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 中将数据添加到 Map 中?

我在 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 有类型推断 https://www.dartlang.org/guides/language/sound-dart#type-inference and 集合文字 https://www.dartlang.org/guides/language/language-tour#maps,因此我们可以对两者使用更简写的语法。让我们编写与上面完全相同的内容,但使用更多 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 提供的所有内容。我们可以使用映射文字,而不用再编写两行代码,甚至可以使用字符串插值 https://www.dartlang.org/guides/language/language-tour#strings:

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

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

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'`"

没有这样的语法new HashMap<>在达特中。类型推断无需它即可工作,因此您可以编写Map<String, Object> map = new HashMap(),或者像我上面的例子,var map = <String, Object> {},或者甚至更好,var map = { 'type': type },它将根据键和值为您输入地图。

我希望这有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不断向Map添加数据 的相关文章

随机推荐