【发布时间】:2020-10-03 09:56:07
【问题描述】:
我尝试使用 HTTP URL 从 Flutter Firebase 中获取数据,但发生了此错误。 请帮我解决这个错误。 [错误:flutter/lib/ui/ui_dart_state.cc(166)] 未处理的异常:类型“字符串”不是“索引”类型“int”的子类型 Products.fetchAndSetProducts 谢谢你
Future<void> fetchAndSetProducts([bool filterByUser = false]) async {
final filterString = filterByUser ? 'orderBy="creatorId"&equalTo="$userId"' :'';
var url = 'https://cowmilknew.firebaseio.com/products.json?auth=$authToken&$filterString';
try {
final response = await http.get(url);
final extractedData = json.decode(response.body) as Map<String, dynamic>;
if (extractedData == null) {
return;
}
url =
'https://cowmilknew.firebaseio.com/RetailerWishlist/$userId.json?auth=$authToken';
final favoriteResponse = await http.get(url);
final favoriteData = json.decode(favoriteResponse.body);
final List<Product> loadedProducts = [];
extractedData.forEach((prodId, prodData) {
loadedProducts.add(Product(
id: prodId,
title: prodData['title'],
description: prodData['description'],
price: prodData['price'],
isFavorite: favoriteData == null ? false : favoriteData[prodId] ?? false,
imageUrl: prodData['imageUrl'],
));
});
_items = loadedProducts;
notifyListeners();
} catch (error) {
throw (error);
}
}
@override
void didChangeDependencies() {
if (_isInit) {
setState(() {
_isLoading = true;
});
Provider.of<Products>(context,listen: false).fetchAndSetProducts().then((_) {
setState(() {
_isLoading = false;
});
});
}
_isInit = false;
super.didChangeDependencies();
}
【问题讨论】:
-
你在哪一行得到这个错误
-
检查 id 的变量类型和价格其中之一与 json 数据不匹配。