Обратный список в ListView.builder во Flutter

#android #dart #flutter

#Android #dart #flutter

Вопрос:

Я хотел изменить список, и я добился этого с помощью reverse: true, . Это работает, но список выровнен по низу и показывает пустое пространство вверху, когда в списке меньше всего элементов.

  Expanded(child:  ListView.builder(
                shrinkWrap: true,
                reverse: true,
                controller: _scrollController,
                itemCount:order_response.orderDetails.length,
                itemBuilder: (context, position) {return orderListItemTile(width,height,order_response,position);},
              ),)
  

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

Но когда я удалил expanded() виджет, когда элементы увеличиваются, он переполняется на пиксель.

  ListView.builder(
            shrinkWrap: true,
            reverse: true,
            controller: _scrollController,
            itemCount:order_response.orderDetails.length,
            itemBuilder: (context, position) {return orderListItemTile(width,height,order_response,position);},
          ),
  

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

Ответ №1:

Помимо изменения списка, другим решением может быть помещение ListView внутри Align виджета с alignment: Alignment.topCenter . Также shrinkWrap: true необходим внутри ListView .

          Align(
            alignment: Alignment.topCenter,
            child: ListView.builder(
              reverse: true,
              shrinkWrap: true,
              ...
              ...
           )
         )
  

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

1. Имейте в виду, что это решение работает, потому что оно сжимает ListView , поэтому вам придется справиться с проблемой, связанной с отсутствием полноэкранного режима ListView . (например, прокрутка внутри него)

Ответ №2:

Измените свой список, используя:

 var reversedList = _response.orderDetails.reversed.toList();
  

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

1. val не может использоваться для объявления переменной в Dart. Может быть, вас смущает его использование в Kotlin или что-то в этом роде? final , var или в данном случае уместно использовать сам тип.

2. Сработало очень хорошо.