Разрушаемая высота не соответствует росту ребенка - PullRequest
0 голосов
/ 14 февраля 2020

Я новичок во Flutter, но мне очень нравится язык, и я надеюсь найти ответы на некоторые мои очень глупые вопросы:)

У меня есть приложение ToDo List, и оно содержит 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, представляет собой столбец, содержащий двух дочерних элементов:

  • Список элементов
  • Разделитель

Буду признателен за любую помощь. Спасибо :) 1026 *

1 Ответ

0 голосов
/ 14 февраля 2020

Хорошо, так что я все испортил. Вместо того, чтобы оборачивать разделитель внутри допустимого, было бы разумнее поместить разделитель в столбец с допустимым значением. Таким образом, разделитель больше не содержится в списке.

Обновленный код:

 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))))
      ]);

А также, по-видимому, разделители всегда имеют некоторые отступы, поэтому я использовал контейнер с украшением для mimi c делитель.

Вот результат:

enter image description here

И теперь все работает как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...