参数类型 'Book' 不能分配给参数类型 'Map<String, dynamic>'.dart(argument_type_not_assignable)

Posted

技术标签:

【中文标题】参数类型 \'Book\' 不能分配给参数类型 \'Map<String, dynamic>\'.dart(argument_type_not_assignable)【英文标题】:The argument type 'Book' can't be assigned to the parameter type 'Map<String, dynamic>'.dart(argument_type_not_assignable)参数类型 'Book' 不能分配给参数类型 'Map<String, dynamic>'.dart(argument_type_not_assignable) 【发布时间】:2021-09-25 06:57:16 【问题描述】:
                 actions: [
                    Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: TextButton(
                          onPressed: () 
                              _bookCollectionReference.add(Book(
                              userId: FirebaseAuth.instance.currentUser.uid,
                              title: book.title,,
                              author: book.author,
                              photoUrl: book.photoUrl,
                              publishedDate: book.publishedDate,
                              description: book.description,
                              pageCount: book.pageCount,
                              categories: book.categories,
                            ));
                          ,
                          child: Text('Save')),
                    ),

///课本

地图 toMap() 返回 '标题':标题, 'user_id':用户ID, “作者”:作者, “笔记”:笔记, 'photo_url': 照片网址, 'published_date':发布日期, “描述”:描述, 'page_count': pageCount, “类别”:类别, ;

【问题讨论】:

你能出示_bookCollectionReference声明吗? 我可以看看 '_bookCollectionReference' 是在哪里声明的 final _bookCollectionReference = FirebaseFirestore.instance.collection('books'); 【参考方案1】:

您忘记通过调用 .toMap() 将 Dart 类转换为 Map (json)

在您的 onPressed 方法中尝试以下代码:

_bookCollectionReference.add(
  Book(
    userId: FirebaseAuth.instance.currentUser.uid,
    title: book.title,,
    author: book.author,
    photoUrl: book.photoUrl,
    publishedDate: book.publishedDate,
    description: book.description,
    pageCount: book.pageCount,
    categories: book.categories,
  ).toMap(),
);

【讨论】:

以上是关于参数类型 'Book' 不能分配给参数类型 'Map<String, dynamic>'.dart(argument_type_not_assignable)的主要内容,如果未能解决你的问题,请参考以下文章

颤振列表错误参数类型'List'不能分配给参数类型'String'

获取错误“未知”类型的参数不能分配给“错误”类型的参数 |空值'

参数类型“对象?”不能分配给参数类型'String'最新版本

参数类型“Type”不能分配给参数类型“FirebaseUser”

参数类型“字符串”不能分配给参数类型“目录”

参数类型“字符串”不能分配给参数类型“对象?函数(对象?,对象?)?