You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:如何默认选中列表中的首个Filter Chip?

实现Filter Chips默认选中第一个选项

要让第一个筛选芯片默认选中,只需在初始化选中列表gender时,把items2的第一个元素加入即可,具体有两种实现方式:

方式一:直接初始化列表

修改gender的初始值,直接包含items2的第一个元素:

final items2 = ["Both", "Boy", "Girl", "Infant"];
List<String> gender = [items2.first]; // 默认选中第一个选项

方式二:在StatefulWidget的initState中初始化(适配动态数据场景)

如果你的页面是StatefulWidget,推荐在initState方法中添加初始选中项,这种方式更灵活,能兼容items2动态加载的情况:

class YourScreen extends StatefulWidget {
  const YourScreen({super.key});

  @override
  State<YourScreen> createState() => _YourScreenState();
}

class _YourScreenState extends State<YourScreen> {
  final items2 = ["Both", "Boy", "Girl", "Infant"];
  List<String> gender = [];

  @override
  void initState() {
    super.initState();
    // 先判断列表非空,避免空指针异常
    if (items2.isNotEmpty) {
      gender.add(items2.first);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Wrap(
        spacing: 8,
        runSpacing: 8,
        children: items2
            .map(
              (e) => FilterChip(
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(10),
                  ),
                  backgroundColor: Colors.white,
                  selectedColor: const Color(0xff6fedf6),
                  label: Container(
                    height: 46,
                    width: 50,
                    alignment: Alignment.center,
                    child: Text(e),
                  ),
                  labelStyle: GoogleFonts.poppins(
                    textStyle: const TextStyle(
                      color: Colors.black,
                      fontSize: 14,
                      fontWeight: FontWeight.w500,
                      letterSpacing: 0.5,
                    ),
                  ),
                  selected: gender.contains(e),
                  onSelected: (bool value) {
                    if (gender.contains(e)) {
                      gender.remove(e);
                    } else {
                      gender.add(e);
                    }
                    setState(() {});
                  }),
            )
            .toList(),
      ),
    );
  }
}

原理说明

FilterChip的selected属性通过gender.contains(e)判断选中状态,所以只要初始时gender列表包含第一个元素,对应的芯片就会默认处于选中状态。

内容的提问来源于stack exchange,提问作者Divya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:52:44