首页 > 解决方案 > 未处理的异常:“String”类型不是“index”的“int”类型的子类型

问题描述

我的代码有问题。以前一切正常,但现在我收到此错误。我认为这是一个很小的错误,但我看不到?我在颤振方面很新,没有太多的知识。从现在开始,我正在做一个视频课程。有谁能够帮我?

谢谢!

错误信息:

#0      Products.fetchAndSetProducts.<anonymous closure> (package:shop_app_flutter/providers/products.dart:83:26)
#1      __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:367:8)
#2      Products.fetchAndSetProducts (package:shop_app_flutter/providers/products.dart:80:21)
<asynchronous suspension>
#3      _ProductsOverviewScreenState.didChangeDependencies (package:shop_app_flutter/screens/products_overview_screen.dart:41:38)
#4      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3862:12)
#5      ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5)
#6      Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14)
#7      Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12)
#8      SingleChildRenderObjectElement.mount (package:flutter/src/widgets/f<…&gt;

产品.dart:

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

import '../models/http_exception.dart';
import './product.dart';

class Products with ChangeNotifier {
  List<Product> _items = [];


  List<Product> get items {
    return [..._items];
  }

  List<Product> get favoriteItems {
    return _items.where((prodItem) => prodItem.isFavorite).toList();
  }

  Product findById(String id) {
    return _items.firstWhere((prod) => prod.id == id);
  }



  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);
    }
  }
}

标签: flutter

解决方案


推荐阅读