Flutter如何实现Dismissible滑动时ListTile内容置于背景下层
Flutter Dismissible与ListTile嵌套滑动效果实现方案
效果参考:
方案1:最小改动调整背景设置
无需调整组件嵌套结构,仅调整背景色赋值位置即可:
- 移除
ListTile的tileColor属性,将原本要设置的 tileColor 挪到包裹Dismissible的父容器上 - 透明背景的ListTile内容不会遮挡下层Dismissible的滑动背景,表现和设置tileColor时的滑动效果完全一致
修改后的代码示例:
Container( // 原ListTile的tileColor移至此处 color: Colors.grey, child: Dismissible( key: UniqueKey(), background: Container( decoration: BoxDecoration( color: cinzaIcone.withOpacity(0.5), borderRadius: BorderRadius.circular(15), ), ), child: ListTile( dense: true, minLeadingWidth: 10, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)), contentPadding: const EdgeInsets.symmetric(horizontal: 10), leading: SizedBox( width: 1, child: Align( alignment: Alignment.centerLeft, child: Icon( Icons.circle, color: Colors.orange, size: 15, ), ), ), title: Text( "CONTRAPISO - SOLEIRAS", style: TextStyle(fontSize: 15, fontWeight: FontWeight.w500, color: Colors.blue), ), subtitle: Row( children: [ Text("12-03-2021"), Text(' até '), Text("17-03-2021"), ], ), ), ), )
方案2:调整嵌套层级
如果必须保留ListTile的tileColor配置,可调整组件嵌套结构:
- 将
Dismissible放在ListTile内部,包裹所有内容(leading、title、subtitle等) - 滑动背景会直接显示在ListTile内容的下层,无需额外调整背景属性
如果需要更灵活的滑动交互,也可使用第三方组件库flutter_slidable,支持直接自定义滑动层与内容层的层级关系,无需手动调整原生组件的嵌套逻辑。
内容的提问来源于stack exchange,提问作者Alan Cesar
相关产品推荐
相关产品推荐

