在Flutter中ListView.builder中如何反转列表

14

我想要翻转列表,使用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);},
              ),)

enter image description here

但是当我删除了expanded()小部件后,如果项目增加,则会按像素溢出。

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

enter image description here

2个回答

33

除了反转列表之外,另一个解决方案可能是将 ListView 放在具有 alignment:Alignment.topCenter Align 小部件中。此外,需要在 ListView 内部使用 shrinkWrap:true

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

1
请记住,这个解决方案之所以有效是因为它缩小了“ListView”,因此您必须处理没有全屏“ListView”带来的痛苦(例如在其中滚动)。 - Peter Toth

22

使用以下方法反转您的列表:

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

2
在Dart中,不能使用val来声明变量。也许你被Kotlin中的用法所困惑了?在这种情况下,适当的做法是使用finalvar或直接使用类型。 - SametSahin
工作得非常好。 - Maravilho Singa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接