简体   繁体   English

如何在 Flutter 中反转列表视图

[英]How to reverse listview in Flutter

I implemented a listview which get data from a json .我实现了一个从listview获取数据的列表json

I followed this implementation.我遵循了这个实现。

How could i reverse the order of this listview?我怎么能颠倒这个列表视图的顺序? (The first element should became the last, ecc...). (第一个元素应该成为最后一个元素,ecc ...)。

You should be able to reverse the list before feeding it to the ListView .您应该能够在将列表提供给ListView之前反转列表。

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

For ListView there is a flag called reverse which is false by default.对于ListView有一个名为reverse的标志,默认情况下为false Change it to true将其更改为

In ListView has an attitude is reverse , set it is true to reverse your list:ListView有一个态度是reverse ,设置它是true来反转你的列表:

ListView.builder(
      reverse: true,
);

而不是反转listview ,使用reversed 属性reverse 函数反转您的列表。

Here is a solution with null safety support of reverse the listview.这是一个反向列表视图的空安全支持的解决方案。 Do not use reverse:true because it will reverse your data but when you open listview.builder widget in your app will take you to scroll to the last item .不要使用 reverse:true 因为它会反转您的数据,但是当您在应用程序中打开 listview.builder 小部件时,您会滚动到最后一项 To avoid that use this:-为避免这种情况,请使用:-

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(),
                      ),)

it's work for me这对我有用

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

If you want to conditionally reverse the List that you are passing to the ListView, you can use this extension:如果你想有条件地反转你传递给 ListView 的列表,你可以使用这个扩展:

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

and use it as [].reverse(yourCondition) (dont forget to import this extension if you have defined it in some other file)并将其用作[].reverse(yourCondition) (如果您已在其他文件中定义它,请不要忘记导入此扩展名)

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

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

If your response is a list use it like this to make it work.如果您的回复是一个列表,请像这样使用它以使其工作。

response.reversed.toList(); response.reversed.toList();

在 Listview Builder 中只做一件事

 reverse:true,

Example :例子 :

List data = [
     {
        "number" : 1,
        "iterator" : 0
     },
     {
        "number" : 2,
        "iterator" : 1
     },
     {
        "number" : 3,
        "iterator" : 2
     },
   ];

**On ListView ... ** **在 ListView ... **

ListView(children: [
   for (var i = data.length; i > 0; i--) ... [
      Text(data[i]["number"].toString())
   ]
])
      List<int> number1 = List.empty(growable: true);
  if (number1.isEmpty) {
    number1.add(2);
    number1.add(9);
    number1.add(5);
    number1.add(6);
    print(number1);
    number1.sort();
    number1=number1.reversed.toList();
    print(number1);
  }
List<int> numbers = [1, 2, 3, 4, 5, 6, 7];
List<int> reversedNumbers = numbers.reversed.toList();

You can reverse it simply like it ==>>你可以像它一样简单地反转它==>>

ListView.builder(
                      itemCount: snapshot.data!.length,
                      itemBuilder: (context, index) {
                        var reverselist = snapshot.data!.reversed.toList();

and Then can be used as ==>然后可以用作 ==>

     Text(
             reverselist[index]
                                            .tituloCategoria
                                            .toString(),
                                                                            

                                        overflow: TextOverflow.ellipsis,
                                      ),

` `

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM