首页 > 解决方案 > 如何在 Flutter 中向 Firestore 添加不同的数据类型

问题描述

在 firebase 控制台中,您可以将布尔值添加为字段甚至 int。我正在尝试通过代码添加这样的数据类型,它会产生错误。我的代码看起来像

 Int Score;
 Bool completion;

void addDetails() {
 Map<dynamic, dynamic> data = <dynamic, dynamic>{
  Score: 1.0,
  completion: false,
};
documentReference.setData(data).whenComplete(() {
  print('Uploaded');
  }).catchError((e) => print(e));
}

控制台错误

  I/flutter ( 3284): Another exception was thrown: type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, dynamic>'

标签: firebasefluttergoogle-cloud-firestore

解决方案


缺少报价

Map<dynamic, dynamic> data = <dynamic, dynamic>{
  'Score': 1.0,
  'completion': false,
};

Firestore 仅接受有效的 JSON,并且需要引号。在 JS 中它们可以省略,因为所有对象键都是字符串,但在 Dart 中它们也可以是其他类型(但不适用于 JSON)。


推荐阅读