【问题标题】:Unhandled Exception: NoSuchMethodError: Class 'bool' has no instance method '[]'未处理的异常:NoSuchMethodError:类“bool”没有实例方法“[]”
【发布时间】:2022-01-08 23:50:24
【问题描述】:
Future<void> fetchAndSetProducts() async {
dynamic url = Uri.parse(
    'https://shop-app-6e7fb-default-rtdb.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'],
      imageUrl: prodData['imageUrl'],
      isFavorite: prodData['isFavorite'],
    ));
  });
  _items = loadedProducts;
  notifyListeners();
} catch (error) {
  throw (error);
}

} [VERBOSE-2:ui_dart_state.cc(209)] 未处理的异常:NoSuchMethodError:类 'bool' 没有实例方法 '[]'。 收件人:真 尝试调用:

【问题讨论】:

    标签: firebase flutter dart


    【解决方案1】:

    从您的 url 返回的 json 数据似乎是这样的:

    {
      "-Msqeb2I7r_u4mk6hDaw": {
        "description": "finally this is done",
        "imageUrl":
            "https://live.staticflickr.com/4043/4438260868_cc79b3369d_z.jpg",
        "isFavorite": false,
        "price": 10000.0,
        "title": "finally"
      },
      "-MsuJLU1bcgNvjIBLDes": {
        "description": "this is a test",
        "imageUrl":
            "https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Cast-Iron-Pan.jpg/1024px-Cast-Iron-Pan.jpg",
        "isFavorite": false,
        "price": 12.12,
        "title": "test"
      },
      "isFavorite": true
    }
    

    注意第三个键/值对是"isFavorite": true

    因此,在您的 .forEach 回调中,prodData 将在第三次迭代中分配给 true。您需要在代码中考虑这种情况。

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 2021-07-12
      • 2019-12-13
      • 2021-05-29
      • 2021-04-20
      • 2021-08-02
      • 2022-11-21
      • 2021-10-22
      • 2020-12-19
      相关资源
      最近更新 更多