Flutter - 过滤列表以与 ListView 一起使用

问题描述 投票:0回答:1

我正在尝试通过为一家简单的假鞋店构建应用程序,充分利用在 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);
            }
          }
        },
      ),
    );
  }
}
flutter dart listview e-commerce
1个回答
0
投票

您当前的代码只是循环并将项目添加到过滤列表中。要显示某些内容,您需要返回一个小部件:

itemBuilder: (context, index) {
          if (shoe.isSpecialSale) {
            return YourCustomWidgetToDisplaySale();
          }
        },
© www.soinside.com 2019 - 2024. All rights reserved.