Firestore 返回 List<dynamic> 而不是 List<String> (颤振)

Jul*_*lie 5 dart firebase flutter google-cloud-firestore

我有一个使用字符串数组设置的 firestore 数据库。在我的代码中我有这个:

  factory Item.fromMap(Map<String, dynamic> map) {
    return Item(
      name: map['name'],
      imageUrls: map['imageUrls'];
Run Code Online (Sandbox Code Playgroud)

imageUrls 是一个字符串列表。我用谷歌搜索了如何处理列表,但我认为它应该能够像这样处理它?我收到此错误:

  Expected a value of type List<String>, but got one of type List<dynamic>
Run Code Online (Sandbox Code Playgroud)

感谢您的任何意见

Ste*_*wie 13

您可以尝试以下方法之一来处理类型转换。

imageUrls: List<String>.from(map['imageUrls']),
Run Code Online (Sandbox Code Playgroud)
imageUrls: (map['imageUrls'] as List).map((element) => element as String).toList(),
Run Code Online (Sandbox Code Playgroud)
imageUrls: <String>[...map['imageUrls']],
Run Code Online (Sandbox Code Playgroud)


Fat*_*yaa 10

你必须将 map['imageUrls'] 转换为 List

   factory Item.fromMap(Map<String, dynamic> map) {
        return Item(
          name: map['name'],
          imageUrls: (map['imageUrls'] as List)?.map((item) => item as String)?.toList();
Run Code Online (Sandbox Code Playgroud)