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

Flutter中如何修改ExpansionTile展开时的标题文本样式?

Flutter 自定义ExpansionTile展开状态下标题样式的实现方案

ExpansionTile没有内置直接设置展开时字体粗细的属性,你可以通过组件自带的展开状态回调,结合状态变量动态切换标题文本样式,实现展开时标题加粗的效果,具体步骤如下:

  • 在对应State类中声明布尔状态变量,记录组件当前是否展开,初始值和组件初始展开状态保持一致即可(默认收起就设为false,设置了initiallyExpanded: true就设为true)
bool _isTileExpanded = false;
  • 给ExpansionTile绑定onExpansionChanged回调,组件展开/收起时会触发这个回调,回调参数就是当前最新的展开状态,在回调里更新状态变量触发UI重建
  • 给title属性传入的Text组件设置动态style,根据当前展开状态切换字体粗细,展开时设为加粗即可

修改后的完整代码如下:

return ExpansionTile(
  textColor: Colors.black,
  // 监听展开状态变化
  onExpansionChanged: (bool expanded) {
    setState(() {
      _isTileExpanded = expanded;
    });
  },
  title: Text(
    _fencingClubDataList[index].Name,
    style: TextStyle(
      // 展开时加粗,收起时使用常规字重
      fontWeight: _isTileExpanded ? FontWeight.bold : FontWeight.normal,
    ),
  ),
  expandedAlignment: Alignment.centerLeft,
  expandedCrossAxisAlignment: CrossAxisAlignment.start,
  children: [
    Table(
      border: TableBorder.all(color: Colors.black),
      defaultVerticalAlignment: TableCellVerticalAlignment.top,
      children: [
        TableRow(children: [
          Text("This is"),
          Text("a sample."),
        ]),
      ],
    ),
  ],
);

这种动态绑定样式的方式不止可以实现加粗效果,展开状态下的字号、字间距、文字装饰等所有文本样式都可以自定义,灵活度比单独使用内置的textColor属性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:45:35