Flutter中如何移除非ListView下ListTile的分隔线
移除ListTile下方的分隔线(非ListView嵌套场景)
我想移除ListTile组件下方的分隔线(效果为ListTile底部无多余灰色线条),注意我的ListTile并未嵌套在ListView中,代码如下:
ListTile( leading: ClipRRect( borderRadius: BorderRadius.circular(50), child: Image.memory(base64Decode(society['image'])), ), title: Text(society['Society_Name']), trailing: ElevatedButton( onPressed: (){}, child: Icon(Icons.email_outlined, size: 25,), style: ElevatedButton.styleFrom(backgroundColor: green), ), ),
解决方法
方法1:用ListTileTheme全局控制分隔线
把ListTile包裹在ListTileTheme组件中,将dividerColor设为透明,直接隐藏默认分隔线:ListTileTheme( dividerColor: Colors.transparent, child: ListTile( leading: ClipRRect( borderRadius: BorderRadius.circular(50), child: Image.memory(base64Decode(society['image'])), ), title: Text(society['Society_Name']), trailing: ElevatedButton( onPressed: (){}, child: Icon(Icons.email_outlined, size: 25,), style: ElevatedButton.styleFrom(backgroundColor: green), ), ), ),方法2:单独设置ListTile的shape属性
直接给ListTile添加shape属性,把底部边框设为透明,覆盖默认分隔线样式:ListTile( shape: Border(bottom: BorderSide(color: Colors.transparent)), leading: ClipRRect( borderRadius: BorderRadius.circular(50), child: Image.memory(base64Decode(society['image'])), ), title: Text(society['Society_Name']), trailing: ElevatedButton( onPressed: (){}, child: Icon(Icons.email_outlined, size: 25,), style: ElevatedButton.styleFrom(backgroundColor: green), ), ),方法3:自定义Row替代ListTile
如果上述方法不生效,完全抛弃ListTile的默认样式,用Container+Row手动实现布局,彻底避免分隔线问题:Container( padding: EdgeInsets.symmetric(horizontal: 16, vertical: 12), child: Row( children: [ ClipRRect( borderRadius: BorderRadius.circular(50), child: Image.memory(base64Decode(society['image'])), ), SizedBox(width: 16), Expanded(child: Text(society['Society_Name'])), ElevatedButton( onPressed: (){}, child: Icon(Icons.email_outlined, size: 25,), style: ElevatedButton.styleFrom(backgroundColor: green), ), ], ), ),
内容的提问来源于stack exchange,提问作者Terminator
相关产品推荐
相关产品推荐

