Как я могу добавить больше, чем 2 кнопки и 1 текст внутри конечного свойства в флаттере

Я хочу создать список корзины продуктов в своем приложении. поэтому я использовал виджет карты, а внутри него использовал виджет ListTile. Внутри listTile я использовал завершающее свойство, чтобы создать столбец, чтобы добавить 2 кнопки и номер, когда я создаю эти вещи, он показывает ошибку макета, которая BOTTOM OVERFLOWED BY 55 PIXEL.

Вот коды

  @override
  _NewTestState createState() => _NewTestState();
}

class _NewTestState extends State<NewTest> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: new AppBar(
          title: new Text("data"),
        ),
        body: new Card(
          child: new ListTile(
            leading: new FlutterLogo(
              size: 50.0,
            ),
            title: new Text("Title"),
            subtitle: new Text("subtitle"),
            trailing: new Column(
              children: <Widget>[
                new IconButton(
                  icon: Icon(Icons.arrow_drop_up),
                  onPressed: () {},
                ),
                new Text("1"),
                new IconButton(
                  icon: Icon(Icons.arrow_drop_down),
                  onPressed: () {},
                ),
              ],
            ),
          ),
        ));
  }
}

Пожалуйста, помогите мне с этим...


person Mohamed Nusky    schedule 28.10.2019    source источник


Ответы (2)


Это потому, что ваш Column выше роста ListTile, и, следовательно, ваш IconButton обрезается ListTile. Мне в голову приходят два варианта:

  • Если ваш Column достаточно мал, попробуйте установить для свойства isThreeLine вашего ListTile значение true, это сделает ListTile немного выше, и это может быть именно то, что вам нужно.
  • Лучшим, более общим подходом было бы создание собственного ListTile путем составления Columns и Rows. Это не трудно сделать на самом деле. Имейте в виду, что ListTile предназначен для очень специфических случаев. Как указано в документации класса ListTile:

Если то, как ListTile размещает и размещает свои элементы, не совсем то, что вам нужно, можно легко создать настраиваемые элементы списка с комбинацией других виджетов, таких как строки и столбцы.

Проверьте пример приложения из документации, это результат, который он генерирует.

введите здесь описание изображения

Это может быть хорошей отправной точкой для того, что вам нужно.

person drogel    schedule 28.10.2019

используйте строку вместо столбца.

 trailing: Row(
     mainAxisSize: MainAxisSize.min,
     children: ...
   )
person Dilanka Fernando    schedule 04.06.2020