【发布时间】:2020-04-05 01:38:21
【问题描述】:
我想从实时数据库中获取数据,数据的形式是 地图 > 问题来了
const url='https://XYZfirebaseio.com/products.json';
try{
final resp= await http.get(url);
print(json.decode(resp.body));
final extractedData=json.decode(resp.body) as Map<String,dynamic>;
final List<Product>loadedProducts=[];
extractedData.forEach((id,data){
loadedProducts.add(
Product(
id: data,
title: data['title'],
description: data['descripiton'],
price:data['price'],
imageUrl: data['imageUrl'],
isFavorite: data['imageUrl']
)
);
});
虽然 Product 类只是一个普通类,并且 PRICE 属性为 Double,但其他所有属性都是 String。执行此代码时会产生以下错误。
I/flutter (4228):“_InternalLinkedHashMap”类型不是“String”类型的子类型
我可以使用什么数据结构/方法/解决方法?
产品类
import 'package:flutter/foundation.dart';
class Product with ChangeNotifier{
final String id;
final String title;
final String description;
final double price;
final String imageUrl;
bool isFavorite;
Product(
{
@required this.id,
@required this.title,
@required this.description,
@required this.price,
this.isFavorite = false,
@required this.imageUrl
}
);
【问题讨论】:
-
你要检索的数据怎么可能是
Map<String, Map<String, String>>的形式?,Firebase数据库总是返回数据为Map<String, dynamic>,你能分享你的产品类吗? -
是的,你是绝对正确的..但我的意思是我得到的确切数据..我只是简单地描述了更多????.但问题是一样的......它返回你提到的类型...但是..dart 不认识它。
-
将您的产品类别添加到您的问题中,以便我能够检查所有内容
-
你可以看到代码的第5行....这行导致提到的错误.????
-
在这种情况下,flutter 抱怨接收到一个简单的字符串,而您期望得到一个
Map<String, dynamic>
标签: android firebase flutter firebase-realtime-database dart