我正在创建一个应用程序内电子邮件收件箱,并希望在 ListTile 中为前导图标的背景添加阴影。如何填充前导属性,使图标上方和下方有填充?
过去我曾尝试将 ListTile 的 contentpadding 设置为 0.0。以及将 Container padding 设置为 0.0。
请检查下面我的代码:
Widget buildItem(LeaveBehindItem item) {
final ThemeData theme = Theme.of(context);
return new Dismissible(
key: new ObjectKey(item),
direction: _dismissDirection,
onDismissed: (DismissDirection direction) {
setState(() {
leaveBehindItems.remove(item);
});
final String action = (direction == DismissDirection.endToStart) ? 'archived' : 'deleted';
_scaffoldKey.currentState.showSnackBar(new SnackBar(
content: new Text('You $action item ${item.index}'),
action: new SnackBarAction(
label: 'UNDO',
onPressed: () { handleUndo(item); }
)
));
},
background: new Container(
color: Colors.green,
child: const ListTile(
leading: const Icon(Icons.done, color: Colors.white, size: 36.0)
)
),
secondaryBackground: new Container(
color: Colors.orange,
child: const ListTile(
trailing: const Icon(Icons.query_builder, color: Colors.white, size: 36.0)
)
),
child: new Container(
padding: EdgeInsets.all(0.0),
decoration: new BoxDecoration(
color: theme.canvasColor,
border: new Border(bottom: new BorderSide(color: theme.dividerColor))
),
child: new ListTile(
contentPadding: EdgeInsets.all(0.0),
leading: Container(
decoration: BoxDecoration(color: Colors.grey[500]),
child: Icon(Icons.lightbulb_outline, size: 50.0,),
),
title: new Text(item.name),
subtitle: new Text('${item.subject}\n${item.to}\nHas been read: ${item.read}'),
onTap: () async {
await Navigator.push(context, MaterialPageRoute(builder: (context) => EmailBody(item: item)));
item.read = true;
},
)
)
);
}
最佳答案
ListTile
具有硬编码的顶部和底部填充 4:
// The minimum padding on the top and bottom of the title and subtitle widgets.
static const double _minVerticalPadding = 4.0;
解决它的唯一方法是用自定义行替换 ListTile。这将为您提供所需的所有灵 active 。
此外,0 的 Padding
永远不会在视觉上改变任何东西。
关于android - 如何从 ListTile 领先属性中删除固有填充?前导属性容器的填充颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55649134/