我想把数据库中的product(entry)id作为代码中object的['id'],但是报错
Future<void> fetchAndSetProducts() async {
final url =
Uri.parse('https://flutter-update.firebaseio.com/products.json');
try {
final response = await http.get(url);
final extractedData = json.decode(response.body) as Map<String, dynamic>;
final List<Product> loadedProducts = [];
extractedData.forEach((prodId, prodData) {
loadedProducts.add(Product(
id: prodId,
title: prodData['title'],
description: prodData['description'],
price: prodData['price'],
isFavorite: prodData['isFavorite'],
imageUrl: prodData['imageUrl'],
));
});
_items = loadedProducts;
notifyListeners();
} catch (error) {
throw (error);
}
}
错误表明,您正在尝试访问具有非整数值索引的字符串元素 您能否分享从 json 文件接收到的数据,以及打印 prodData 会更有帮助,因为它表明 prodData 似乎是字符串而不是您期望的 Map 类型
试试这个:
Future<void> fetchAndSetProducts() async {
...
extractedData.forEach((prodId, prodData) {
loadedProducts.add(Product(
id: prodId,
title: prodData['title'] ?? 'Untitled',
description: prodData['description'] ?? '',
price: (prodData['price'] ?? 0).toDouble(),
isFavorite: prodData['isFavorite'] ?? false,
imageUrl: prodData['imageUrl'] ?? '',
));
});
...
}