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

Flutter中如何实现ExpansionTile展开时头部字体变大的效果?

实现方案

你的判断是正确的,headerBuilder回调自带的isExpanded参数已经实时同步当前面板的展开状态,直接用该参数动态控制标题字体大小即可。

基础实现(无状态切换动画)

直接根据isExpanded的布尔值给Text组件的fontSize赋值即可,修改后的代码片段如下:

children: infos.map<ExpansionPanel>((Info info) {
  return ExpansionPanel(
    headerBuilder: (BuildContext context, bool isExpanded) {
      return ListTile(
        title: Text(
          info.headerValue,
          // 展开时字体大小为18,收起时为14,可自行调整数值
          style: TextStyle(fontSize: isExpanded ? 18 : 14),
        ),
      );
    },
    // 此处保留你原有其余代码
  );
})

进阶实现(带平滑过渡动画)

如果需要实现展开/收起过程中字体大小平滑变化的效果,可以用AnimatedDefaultTextStyle组件包裹标题,代码如下:

children: infos.map<ExpansionPanel>((Info info) {
  return ExpansionPanel(
    headerBuilder: (BuildContext context, bool isExpanded) {
      return ListTile(
        title: AnimatedDefaultTextStyle(
          // 动画时长可根据需求调整
          duration: const Duration(milliseconds: 200),
          curve: Curves.easeInOut,
          style: TextStyle(
            fontSize: isExpanded ? 18 : 14,
            // 还可同步配置其他样式的切换动画,例如字重、颜色
            fontWeight: isExpanded ? FontWeight.w600 : FontWeight.normal,
            color: isExpanded ? Colors.black : Colors.grey[700],
          ),
          child: Text(info.headerValue),
        ),
      );
    },
    // 此处保留你原有其余代码
  );
})

以上两种方案都可以实现你需要的展开时头部字体放大的效果,可根据交互需求选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 01:24:04