我正在尝试使用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])
),
);
})
注意:如果我点击特定类别并在屏幕上的滑块中滑动任何图像,列表就会更新