参数类型 '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'最新版本