如何在 Flutter 中反转列表视图

How to reverse listview in Flutter

我实现了一个 listview,它从 json 获取数据。

我遵循 this 实施。

如何反转此列表视图的顺序? (第一个元素应该成为最后一个元素,ecc ...)。

不要反转 listview,而是使用 reversed property or reverse function 反转列表。

您应该能够在将列表提供给 ListView 之前反转列表。

List<String> animals = ['cat', 'dog', 'duck'];
List<String> reversedAnimals = animals.reversed.toList();

对于 ListView 有一个名为 reverse 的标志,默认情况下为 false。将其更改为 true

ListView中有一个态度是reverse,设置为true来反转你的名单:

ListView.builder(
      reverse: true,
);
 ListView.builder(
                       reverse: true,
                       itemCount: 10,
                       padding: EdgeInsets.only(top: 10,bottom: 10),

                       itemBuilder: (context, index){
                             return .....
                          }))

只需设置反向:true

return MaterialApp(
  home: Scaffold(
    appBar: appBar(),
    body: ListView.builder(
      shrinkWrap: true,
      reverse: true, // here
      itemCount: 5,
      itemBuilder: (context, index){
        return listDesign(index);
      },
    ),
  ),
);

如果您的回复是一个列表,请像这样使用它以使其发挥作用。

response.reversed.toList();

在列表视图生成器中 只做一件事

 reverse:true,

如果您想有条件地反转您传递给 ListView 的列表,您可以使用此扩展:

extension ListExtension<T> on List<T>{
  List<T> reverse(bool condition){
    return condition ? reversed.toList() : this;
  }
}

并将其用作 [].reverse(yourCondition) (如果您在其他文件中定义了此扩展,请不要忘记导入它)

这是一个 null safety 支持反转列表视图的解决方案。 不要使用 reverse:true,因为它会反转您的数据,但当您在应用程序中打开 listview.builder 小部件时,您会滚动到最后一项。 为避免这种情况,请使用:-

ListView.builder(                  
                  itemCount: customer?.data.length ?? 0,
                  itemBuilder: (BuildContext context, int index) {
                    int itemCount = customer?.data.length ?? 0;
                    int reversedIndex = itemCount - 1 - index;
                    child: Container(
                     child: Text(value.allCustomerModel!.data![reversedIndex].attributes!.name.toString(),
                      ),)