我正在尝试通过为一家简单的假鞋店构建应用程序,充分利用在 Flutter 上的 Udemy 课程中学到的知识。我希望在应用程序的主页中拥有的主要功能是具有所谓的“热门优惠”的水平 ListView(因此,可滚动小部件)。商店中的所有产品均使用 Shoe 模型类实现,其中包括名称、品牌、图像路径等参数,最重要的是,布尔值
isSpecialSale
指定鞋子是否(还有什么?)特价销售因此应该放在“热门优惠”部分。但是,我不确定如何将鞋子列表 shoeListFull
过滤为 onSpecialSale == True
鞋子列表并将其部署到上述 ListView。
我有一个简单的无状态小部件,我尝试在其中创建热门优惠列表,此处名为
shoesFiltered
,但是当我在主页中将其实例化并将 shoeList
设置为 shoeListFull
时,它不会返回任何内容(如前所述) ,包含所有在售鞋子的列表)。我错过了什么吗?请注意,我还没有进入课程中引入有状态小部件的部分,因此我尝试在不使用 setState 等的情况下工作。
class ShoeTile extends StatelessWidget {
const ShoeTile({super.key, required this.title, required this.shoeList});
final String title;
final List<Shoe> shoeList;
@override
Widget build(BuildContext context) {
return Expanded(
child: ListView.builder(
itemCount: 5,
scrollDirection: Axis.horizontal,
itemBuilder: (context, index) {
for (Shoe shoe in shoeList) {
List<Shoe> shoesFiltered = [];
if (shoe.isSpecialSale) {
shoesFiltered.add(shoe);
}
}
},
),
);
}
}
您当前的代码只是循环并将项目添加到过滤列表中。要显示某些内容,您需要返回一个小部件:
itemBuilder: (context, index) {
if (shoe.isSpecialSale) {
return YourCustomWidgetToDisplaySale();
}
},