dictionary - 不断向 map 添加数据

我需要在 for...loop 之前向 Map 或 HashMap 添加数据,在 for...loop 期间向 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);

我的问题是,我将如何创建文档并立即获取它的 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>' "

提前谢谢你!

最佳答案

与您在 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];
}

当然,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];
}

好的,这更好,但仍然没有使用 Dart 提供的所有功能。我们可以使用 map 字面量来代替多写两行代码,甚至可以使用 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'`"

没有这样的语法 new HashMap<>在 Dart 。没有它,类型推断就可以工作,所以你可以写 Map<String, Object> map = new HashMap() ,或者像我上面的例子一样,var map = <String, Object> {} ,甚至更好,var map = { 'type': type } ,它将根据键和值为您键入 map 。

希望对你有帮助!

https://stackoverflow.com/questions/49291203/

相关文章:

google-maps - 修复中心的谷歌地图标记

dart - Dart 中有 Goto 函数吗?

flutter - 如何定期设置状态?

dart - 格式化持续时间,如 HH :mm:ss

dart - 如何使TextField的背景为矩形框形状?

dart - 用于 Flutter/Dart 的 Google Sheets API v4

flutter - 如何在 flutter 的盒子周围创建虚线边框?

dart - Flutter Web 不显示 Material Design 图标

dart - Flutter 中的透明 PageRoute 用于显示(半)透明页面

image - 如何在 Dart/Flutter 中读取本地镜像文件的字节数?