Flutter:如何使用ChangeNotifier更新onTap上的列表

时间:2020-07-23 10:16:04

标签: flutter debugging dart

我正在尝试使用onTap更改特定类别上的列表内容,该onTap可以工作并且列表数据得到更新,但是它没有反映在屏幕上。我正在使用ChangeNotifier更新列表数据。

代码如下:

Consumer<Products>(
      builder: (context, pr, child) {
        var productTypes = pr.getProductsCategories();
        return ListView.builder(
          scrollDirection: Axis.horizontal,
          itemCount: productTypes.length,
          itemBuilder: (context, index) {
            // print(globals.pr.getProductsByCategory(productTypes[index]['category']));
            return GestureDetector(
              onTap: () {
                setState(() {
                  pr.productList = pr.getProductsByCategory(productTypes[index]['category']);
                });
              },
              child: categoryChip(categoryJson[productTypes[index]['category']]),
            );
          },
        );
      },
    )

提供程序中的方法:

List<Product> getProductsByCategory(String category) {
    print("getting");
    this.productList=[];
    for (Product u in this.products) {
      if(category == 'All') {
        this.productList.add(u);
      }
      if (u.category == category) {
        this.productList.add(u);
      }
    }
    notifyListeners();
    return productList;
  }

这是列表的显示方式:

Consumer<Products>(builder: (context, pr, child) {
        return GridView.count(
          shrinkWrap: true,
          crossAxisCount: 2,
          scrollDirection: Axis.vertical,
          physics: NeverScrollableScrollPhysics(),
          childAspectRatio: 1/2,
          children: List.generate(
            pr.productList.length, 
            (int index) => ProductCard(product:pr.productList[index])
          ),
        );
    })

注意:如果我点击特定类别并在屏幕上的滑块中滑动任何图像,列表就会更新

0 个答案:

没有答案