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

Flutter中移除ExpansionTile展开时标题与子组件间的分隔线

解决Flutter ExpansionTile展开时标题与子组件间分隔线的问题

要实现只保留子组件之后的分隔线、隐藏标题与子组件之间的那条,你可以通过覆盖局部Theme的dividerColor配合手动添加子组件末尾的分隔线来搞定,下面是具体实现:

方法一:局部Theme+手动添加分隔线

直接用Theme包裹ExpansionTile,把主题里的dividerColor设为透明,这样就能隐藏默认的标题下方分隔线,然后在子组件的最后手动添加你需要的分隔线:

Theme(
  data: Theme.of(context).copyWith(
    dividerColor: Colors.transparent, // 隐藏标题与子组件之间的默认分隔线
  ),
  child: ExpansionTile(
    title: const Text('示例标题'),
    leading: const Icon(Icons.folder_open),
    children: [
      // 你的子组件内容
      const Padding(
        padding: EdgeInsets.symmetric(horizontal: 16, vertical: 12),
        child: Text('这里是子组件的内容区域'),
      ),
      // 手动添加子组件之后的分隔线,样式可以自定义
      const Divider(
        height: 1,
        color: Colors.grey.shade300,
        indent: 16,
        endIndent: 16,
      ),
    ],
  ),
)

方法二:使用ListTileTheme控制

如果你的ExpansionTile是放在列表场景中,也可以用ListTileTheme来统一控制分隔线:

ListTileTheme(
  dividerColor: Colors.transparent,
  child: ExpansionTile(
    title: const Text('另一个示例'),
    children: [
      const ListTile(title: Text('子项1')),
      const ListTile(title: Text('子项2')),
      // 子组件末尾的分隔线
      const Divider(color: Colors.grey.shade300),
    ],
  ),
)

为什么之前的尝试没生效?

默认情况下,ExpansionTile的标题下方分隔线是继承自全局Theme的dividerColor,如果只是单独设置ExpansionTile的布局属性(比如expandedAlignment之类的),是无法直接修改这条分隔线颜色的,必须通过局部Theme覆盖才能触达对应的样式控制。

内容的提问来源于stack exchange,提问作者Farhana Naaz Ansari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:58:14