在将列表提供给ListView
之前,您应该能够将其反转。
List<String> animals = ['cat', 'dog', 'duck'];
List<String> reversedAnimals = animals.reversed.toList();
对于 ListView
,有一个名为 reverse
的标志,默认值为 false。将其更改为 true。
ListView 中的一个属性是 reverse,将其设置为 true 将反转您的列表:
ListView.builder(
reverse: true,
);
以下是支持空安全的反转列表视图的解决方案。 不要使用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(),
),)
ListView.separated(
itemCount: widget.orderList.length,
itemBuilder: (context, index) {
final reversed = widget.orderList.reversed.toList(); // reverse your list here
final item = reversed[index]; // assign it with index
return Text(
item.name, // the item name in my list
),
},
// The separators
separatorBuilder: (context, index) {
return const Divider(
color: Colors.grey,
);
},
),
ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder: (context, index) {
var reverselist = snapshot.data!.reversed.toList();
然后可以用作 ==>
Text(
reverselist[index]
.tituloCategoria
.toString(),
overflow: TextOverflow.ellipsis,
),
`
如果你想要有条件地反转传递给ListView的列表,你可以使用这个扩展:
extension ListExtension<T> on List<T>{
List<T> reverse(bool condition){
return condition ? reversed.toList() : this;
}
}
并将其用作[].reverse(yourCondition)
(如果您在其他文件中定义了它,请不要忘记导入此扩展)
例子:
List data = [
{
"number" : 1,
"iterator" : 0
},
{
"number" : 2,
"iterator" : 1
},
{
"number" : 3,
"iterator" : 2
},
];
**关于 ListView ... **
ListView(children: [
for (var i = data.length; i > 0; i--) ... [
Text(data[i]["number"].toString())
]
])
List<int> numbers = [1, 2, 3, 4, 5, 6, 7];
List<int> reversedNumbers = numbers.reversed.toList();