扑朔迷离之后,升级Listtile的主要内容与父项不再匹配

时间:2019-04-15 16:00:41

标签: dart flutter height

昨天进行了状态升级后,ListTile行距的内容(特别是高度)不再与父级匹配。 我现在身高溢出。宽度按预期工作。 如您在图片中所看到的,领先的小部件下方仍然有空间。 有人知道如何解决这个问题吗?

还是有办法降级Flutter版本?

  Widget _listTile(){
return ListTile(
  contentPadding: EdgeInsets.fromLTRB(3.0, 1.0, 0.0, 1.0),
  dense: true,

  leading: Column(
    children: <Widget>[
      _leadingButton(),
      _leadingProgress
    ],
  ),
  title: _textSubtitle(subtitle),
  subtitle: _textSubtitle(subtitle),

);

}

enter image description here

1 个答案:

答案 0 :(得分:0)

我相信引起此问题的更改是[this] [1]:https://github.com/flutter/flutter/commit/0e2eeb5a485aaccdab7007ad9b90fd8120e77983#diff-53f33273ae4e7462729c5f4b7394428b。如果您阅读该代码,则表示正在进行更新以符合材料规范,这意味着对控件大小的限制,因此很有可能它不会恢复到原来的样子。从技术上讲,您的使用方式与材料规范背道而驰。

但是,您不必创建降级的波动,而只需创建自己的小部件即可执行相同的操作-无需使用ListTile。

类似的事情可能会做:

class MyListTile extends StatelessWidget {
  final Widget leading;
  final Widget title;
  final Widget subtitle;
  final EdgeInsets padding;

  MyListTile({@required this.leading, @required this.title, @required this.subtitle, this.padding});

  @override
  void build(BuildContext context) {
    return Padding(
      padding: padding ?? EdgeInsets.zero,
      child: Row(
        children: [
          leading,
          Expanded(
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                title,
                subtitle,
              ],
            ),
          ),
        ],
      ),
    );
  }
}

尽管公开了全部-我没有运行该代码,甚至没有将其放在IDE中,所以它可能会有问题,但这应该说明您尝试在其中进行的操作的基本知识。您可能需要根据需要将内容包装在padding中(很可能至少是前导控件),以获取当前的间距。