Flutter | Как добавить SizedBox() в качестве последнего элемента ListView.builder()?

#flutter #dart

Вопрос:

Я пытаюсь поместить некоторое пространство или SizedBox() в качестве последнего элемента списка, потому что FloatingActionButton() скрывает некоторую информацию из последнего элемента списка.

Я хочу прокрутить пробел/размерное поле (), например, в WhatsApp.

 body: ListView.builder(
    itemCount: cardsList.length,
    itemBuilder: (context, i) {
      return Column(
        children: [
          ListTile( ... ),
          Divider( ... ),
        ],
      );
    },
  ),
 

Ответ №1:

ListView обладает свойством заполнения

 body: ListView.builder(
    padding: const EdgeInsets.only(bottom: 100),
    itemCount: cardsList.length,
    itemBuilder: (context, i) {
      return Column(
        children: [
          ListTile( ... ),
          Divider( ... ),
        ],
      );
    },
  ),
 

Комментарии:

1. Что ж, это было быстро. еще один вопрос, пожалуйста, почему вы использовали константу перед EdgeInsets ?

2. Я использую flutter_lints: ^1.0.4 # https://pub.dev/packages/flutter_lints правило пакета и переопределения prefer_const_constructors: true , поэтому теперь анализатор просит меня добавить cont ключевое слово, если это возможно

3. Спасибо за вашу помощь !!

4. Вы можете использовать const ключевое слово, потому EdgeInsets что имеет конструктор const. Это позволяет фреймворку не перестраивать его каждый раз, когда необходимо перестраивать дерево виджетов, а перезагружать его как есть из кэша. Повышение производительности

Ответ №2:

Вы можете обернуть свой ListView с Column помощью виджета. В этом виджете добавьте SizedBox . Подобный этому:

 body: Column(
  children: [
    ListView.builder(
      itemCount: cardsList.length,
      itemBuilder: (context, i) {
        return Column(
          children: [
            ListTile( ... ),
            Divider( ... ),
          ],
        );
      },
    ),
    SizedBox(height: 50.0)
  ]
)
 

Комментарии:

1. К сожалению, это создало много проблем.

Ответ №3:

Я думаю, ты хочешь этого

  ListView.builder(
        itemCount: cardsList.length   1,
        itemBuilder: (context, index) =>
            index < items.length ? myListTile() : SizedBox(),
      ),
 

Комментарии:

1. myListTile() это Column( children: [ ListTile( ... ), Divider( ... ), ], ); в вашем случае.

2. Я думал, что мой вопрос ввел в заблуждение, но этот ответ исправил ситуацию. Спасибо!

3. Рад вам помочь.