可允许的身高与孩子的身高不匹配

时间:2020-02-14 15:35:29

标签: flutter flutter-layout

我是Flutter的新手,但是我真的很喜欢这种语言,并希望找到一些可能非常愚蠢的问题的答案:)

我有一个待办事项列表应用程序,它包含一个带有可忽略图块的ListView。 我添加了一个分隔符来分隔瓷砖,但是在添加分隔符之后,Dismissible的高度不再与它的子对象匹配。

如您所见,没有分隔符,可允许的高度与其子项之一匹配:

enter image description here

正如您所看到的,除法器的可允许高度与它的子代之一不匹配。或者至少是我的想法(请记住我对这种语言的现有知识)。可忽略的高度似乎大于孩子之一。

enter image description here

这是我创建可解雇对象的方式:

return Dismissible(
          key: Key(item.getId()),
          direction: DismissDirection.endToStart,
          background: Container(
            alignment: AlignmentDirectional.centerEnd,
            color: Colors.red,
            child: Padding(
              padding: EdgeInsets.fromLTRB(0.0, 0.0, 20.0, 0.0),
              child: Icon(
                Icons.delete,
                color: Colors.white,
              ),
            ),
          ),
          onDismissed: (direction) {
            toDoRemove(index);
          },
          child: Column(children: <Widget>[
            ListTile(
              leading: Theme(
                  data: ThemeData(unselectedWidgetColor: Colors.white24),
                  child: Checkbox(
                      checkColor: Colors.white,
                      activeColor: Colors.blue,
                      value: item.isDone(),
                      onChanged: (bool newValue) {
                        toDoToggle(index, newValue);
                      })),
              title: Text(item.getTitle()),
            ),
            Divider(
              color: Colors.white24,
              thickness: 0.0,
            ),
          ]));

从代码中可以看出,Dismissible的子级是一个包含两个子级的列:

  • 列表图块
  • 除法器

我将不胜感激。谢谢:)

1 个答案:

答案 0 :(得分:0)

好的,所以我搞砸了。与其将分隔符包装在可解散对象内部,不如将分隔符放在具有可解散对象的列中会更聪明。这样,分隔符就不再包含在可弃项中了。

更新代码:

 return Column(crossAxisAlignment: CrossAxisAlignment.stretch, children: <Widget>[
        Dismissible(
          ...
          child: // No Column anymore
            ListTile(
              leading: Theme(
                  data: ThemeData(unselectedWidgetColor: Colors.white24),
                  child: Checkbox(
                      checkColor: Colors.white,
                      activeColor: Colors.blue,
                      value: item.isDone(),
                      onChanged: (bool newValue) {
                        toDoToggle(index, newValue);
                      })),
              title: Text(item.getTitle()),
            ),
          ),
        Container(decoration: BoxDecoration(border: Border(bottom: BorderSide(color: Colors.white24, width: 0.4))))
      ]);

而且似乎分隔线总是有一些填充物,因此我使用了带装饰的容器来模仿分隔线。

这是结果:

enter image description here

现在它可以正常工作了。