我尝试过firebase实时数据库。这是我用来从数据库中提取数据并将其转换回Map
的方法。但是,最近我切换到cloud_firestore,并且不知道如何执行类似的功能。
请任何人帮助我。
Future<void> fetchAndSetProducts() async {
const url = 'https://flutter-update.firebaseio.com/products.json';
try {
final response = await http.get(url);
final extractedData = json.decode(response.body) as Map<String, dynamic>;
if (extractedData == null) {
return;
}
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);
}
}
这是我尝试修改代码以便与之前的代码一起工作的尝试:
Future<void> fetchAndSetFoods() async {
try {
final response = databaseReference.collection('Food').getDocuments();
final extractedData = json.decode(response) as Map<String, dynamic>;
if (extractedData == null) {
return;
}
final List<Foods> loadedFoods = [];
extractedData.forEach((prodId, prodData) {
loadedFoods.add(FoodInfo(
id: prodId,
title: prodData['title'],
description: prodData['description'],
affordability: prodData['affordability'],
image: prodData['image'],
serviceTime: prodData['serviceTime'],
cuisine: prodData['cuisine'],
));
});
_foods = loadedFoods;
notifyListeners();
} catch (error) {
throw (error);
}
}