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
相关产品推荐
相关产品推荐

