android - 如何从 ListTile 领先属性中删除固有填充?前导属性容器的填充颜色

标签 android user-interface dart flutter material-design

我正在创建一个应用程序内电子邮件收件箱,并希望在 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/

相关文章:

c++ - Qt GUI - 仅当值更改时才想从 .txt 文件中读取

Dart - 减去一些 double 值会产生错误的结果

dart - string.hashCode 比 dart 版本稳定吗?

ios - Flutter iOS 电子邮件文本字段内容类型

android - 如何修复错误 "Resource ID #0x7f0600c3 type #0x4 is not valid"

android - 在 Android 上使用 H2 数据库和 OrmLite 的速度问题

android - 当 InetAddress 改变时 ServerSocket 会发生什么?

jQuery UI Slider - handle 动画和滚动内容不同步

android:如何禁用viewpager上的滚动

ios - 如何在 ios 中创建像 Facebook 这样的可点击标签?