【问题标题】:The argument type 'Map<dynamic, dynamic>' can't be assigned to the parameter type 'Map<String, dynamic>'. error showing in flutter参数类型“Map<dynamic, dynamic>”不能分配给参数类型“Map<String, dynamic>”。颤动中显示错误
【发布时间】:2022-01-03 23:14:39
【问题描述】:
Map<String, dynamic> messageInfoMap = {
    "message": message,
    "sendBy": myUserName,
    "ts": lastMessageTs,
    "imgUrl": myProfilePic
  };

和....

Future addMessage(
  String chatRoomId, String messageId, Map messageInfoMap) async {
return FirebaseFirestore.instance
    .collection("chatrooms")
    .doc(chatRoomId)
    .collection("chats")
    .doc(messageId)
    .set(messageInfoMap);

对于最后一行 .set(messageInfoMap),我收到一条错误消息“无法将参数类型 'Map' 分配给参数类型 'Map'”我没有发现任何错误,因为 messageInfoMap 应该是 'Map',但我不知道为什么会出现此错误。

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您有两个变量,首先,您在某处声明了messageInfoMap(您没有显示在哪里,但我认为所有这些代码都在同一个类中?)

    那么,你的函数接受三个参数,第三个参数也叫messageInfoMap,它的类型是Map,当然和Map&lt;dynamic, dynamic&gt;是一样的。我假设您将第一个变量作为函数的参数传递?如果是这种情况,您只需确保将第二个变量设为字符串映射,动态:

    Future addMessage(
      String chatRoomId, String messageId, Map<String, dynamic> messageInfoMap) async {
    return FirebaseFirestore.instance
        .collection("chatrooms")
        .doc(chatRoomId)
        .collection("chats")
        .doc(messageId)
        .set(messageInfoMap);
    
    

    【讨论】:

      猜你喜欢
      • 2021-08-29
      • 2021-10-02
      • 2020-12-15
      • 2020-12-27
      • 2021-03-23
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      相关资源
      最近更新 更多