Flutter和Cloud_Firestore。将文件转换成地图

时间:2019-11-25 09:11:37

标签: dictionary flutter dart google-cloud-firestore

我尝试过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);
}
}

0 个答案:

没有答案