出现错误:参数类型“产品”无法分配给参数类型“地图<字符串,动态>
Posted
技术标签:
【中文标题】出现错误:参数类型“产品”无法分配给参数类型“地图<字符串,动态>【英文标题】:getting error: The argument type 'Product' can't be assigned to the parameter type 'Map<String, dynamic> 【发布时间】:2019-09-28 04:26:52 【问题描述】:我正在尝试添加一些新数据,但出现错误:
The argument type 'Product' can't be assigned to the parameter type 'Map<String, dynamic>
这是我想要做的:
我有一个只有 2 TextField
s 的表格
我已经用数据声明了一张地图
final Map<String, dynamic> _formData =
'title': null,
'content': null,
;
然后我使用 bloc 通过模型构造函数 Product
传递数据
RaisedButton(
child: Text('Add'),
onPressed: ()
bloc.createData(
Product(
title: _formData['title'],
content: _formData['description'],
)
);
),
在集团中,我将它传递给提供者,如下所示:
void createData(Product product) async
String id = await db.createData(product);
_inId.add(id);
它来了:
Future createData(Product product) async
DocumentReference ref = await db.collection("product").add(product); //error: The argument type 'Product' can't be assigned to the parameter type 'Map<String, dynamic>
print(ref.documentID);
return ref.documentID;
因为我正在使用 collection_reference 并且它需要一个地图,所以我不能使用参数模型 Products,它的构造如下:
class Product
final String title, content;
Product(this.title, this.content);
【问题讨论】:
【参考方案1】:您需要将产品转换为地图
例子:
Future createData(Product product) async
await db.collection("product").add( _convertProductToMap(product));
Map<String, dynamic> _convertProductToMap( Product product )
Map<String, dynamic> map = ;
map['title'] = product.title;
map['content'] = product.content;
return map;
在从 db 检索数据后,您还需要将映射转换回 Product 对象
【讨论】:
以上是关于出现错误:参数类型“产品”无法分配给参数类型“地图<字符串,动态>的主要内容,如果未能解决你的问题,请参考以下文章
AppBarDesign 无法分配给参数类型“PreferredSizeWidget”
Flutter中的参数类型“String”无法分配给参数类型“Uri”[重复]