我正在开发电子商务应用程序在扑动,在主屏幕我有一个一般的页面,但有类别在这里:
主屏幕
所以当我点击每个类别时,整个屏幕应该重新构建并更改为类别项小部件。
我有一个方法,每次用户点击一个类别的屏幕将重新建立:
void _switchToCategories(String categoryValue) {
setState(() {
_categoryScreen = true;
category = categoryValue;
});
}
所以我有一个条件当屏幕被构建
(_categoryScreen)?
ProdcutsPerCategory(category: category):
other column
但是有一个问题,produccutspercategory小部件只构建一次,第一个类别被选中,
这意味着即使我选择了另一个类别,小部件也不会重新创建并给我该类别产品。我也使用setState()
任何想法?
我遇到了完全相同的问题,我做了一些工作,但首先让我解释一下我认为发生了什么,你使用相同的小部件ProdcutsPerCategory
并改变传递的参数,所以dart渲染相同的旧对象,将其标记为相同,我的工作是为每种类别创建一个小部件,并将其放在list
List<Widgets> listOfCatigory = [ProdcutsPerCategory(cat1),ProdcutsPerCategory(cat3),ProdcutsPerCategory(cat3)]
那么示例代码应该是这样的
// default widget
var widget catWidget = listOfCatigory[0];
void _switchToCategories(int selectedIndex) {
setState(() {
_categoryScreen = true;
catWidget = listOfCatigory[selectedIndex];
});
}
并像这样渲染
(_categoryScreen)?
catWidget:
other column
也许在您的ProdcutsPerCategory
小部件中,您在initState中使用类别(这只能发生一次)…有了更多的代码,我们可以更轻松地帮助您!