Попытка использовать firebase для получения запроса на мое приложение флаттера и получение ошибки - PullRequest
2 голосов
/ 06 марта 2020

введите описание изображения здесь [Это передний экран, который представляет собой gridTile и получает данные из firebase

<!-- this is the method which the grid time is using to fetch data from firebase-->

 Future<void> fetchAndSetProducts() async {
    const url ='MY flutter url';
    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);
    }
  }

] 2

введите описание изображения здесь

1 Ответ

1 голос
/ 06 марта 2020

Это ваш json:

{
   "-M1We9LYxWhijvoECbpY":{
      "description":"Abe Kya be saale",
      "imageURL":"https://cdn.wallpapersafari.com/89/2/Lnxobm.jpg",
      "isFavorite":false,
      "price":747.0,
      "title":"test"
   },
   "-M1WlRlzv8rYwhGklkyc":{
      "description":"Abe sale nikal na",
      "imageURL":"https://cdn.wallpapersafari.com/89/2/Lnxobm.jpg",
      "isFavorite":false,
      "price":43.0,
      "title":"fdddfff"
   },
   "-M1XmbG11YGDgSdJyfvm":{
      "description":"dfvdfvfdvfvfdb",
      "imageURL":"https://cdn-products.eneba.com/resized-products/qoA2QojrFaqg8VtfKSEJm1jsXU-9UEJJSNf2WTvMBjE_390x400_2x-0.jpeg",
      "isFavorite":false,
      "price":74.0,
      "title":"new"
   },
   "-M1axCdqSDIIijYYSXDX":{
      "description":"gctdcgchvhgvggh",
      "imageURL":"https://cdn.pixabay.com/photo/2016/10/02/22/17/red-t-shirt-1710578_1280.jpg",
      "isFavorite":false,
      "price":411.0,
      "title":"bhbn"
   },
   "-M1i_KbskfnTLxfFRIiu":{
      "description":"dzvfvbvfbvggfbvxfgb gfvb ",
      "imageUrl":"https://5.imimg.com/data5/IJ/JK/MY-11744895/playing-football-500x500.jpg",
      "isFavorite":false,
      "price":65.0,
      "title":"fbvfbvc cv"
   }
}

Все узлы содержат атрибут imageURL, за исключением одного узла, который содержит атрибут imageUrl. Поэтому сначала вам нужно изменить json, чтобы все узлы содержали imageURL (заглавный URL), а затем в своем коде выполните следующее:

  extractedData.forEach((prodId, prodData) {
        loadedProducts.add(Product(
          id: prodId,
          title: prodData['title'],
          description: prodData['description'],
          price: prodData['price'],
          isFavorite: prodData['isFavorite'],
          imageUrl: prodData['imageURL'],
        ));
      });
...