Flutter反向ListView从顶部开始

4

我有一个ListView,通常从顶部开始滚动,但我将reverse设置为true,这正是我需要的,但现在列表从底部开始。

我如何设置起始位置,以便尽管被反转,它仍从顶部开始向下滚动?

因此,基本上就像这样,日期顺序被反转,就像我需要的一样:

14th
12th
7th
6th
5th

但是默认情况下整个页面向下滚动到底部...所以我必须向上滚动才能看到第12和14项。

....off the top of the screen
7th
6th
5th
4th
3rd - starting position.

我希望通过设置滚动起始位置,使其从页面顶部开始滚动。希望这个描述能让人更加明确。

3个回答

16

您也可以通过这种方式颠倒呈现顺序:注意 ((feed.length-1) - index) 数组索引。使用这种技术和您正在使用的某些组合将产生您想要的结果。

List<String> feed = List();

feed.add("AAAA");
feed.add("BBBB");
feed.add("CCCC");

ListView.builder(
  itemCount: feed.length,
  itemBuilder: (context, index) {
    return ListTile(title: feed[(feed.length - 1) - index]);
  },
);

没错,非常好用,谢谢。不过应该是(feed.length -1) - index。我猜现在没有设置滚动起始位置的方法,所以这个解决方法暂时可以。 - Hasen
好的,很高兴它对你起作用了。也许有人可以介绍一种设置滚动位置的方法。 - E.Bradford
现在没问题了,我已经使用这种方法调整好并使其正常工作。如果您修复了错误,我可以将其选为最佳答案。 - Hasen
这就是我正在寻找的。 - Dart
这是一个非常简单而聪明的答案。 - undefined

0

简而言之:reverse: true 是从底部开始的。

不要用它来从顶部开始。

我了解到:reverse: true 不是为了颠倒你的列表中的项目,而是为了颠倒滚动方向。它似乎很方便地颠倒你的项目,但它不如list.reversed.toList()方便。因此,如果您想要“从顶部开始”,但同时使用reverse: true(从底部开始),这是没有意义的。

  • 如果您想要颠倒您的项目,请将它们颠倒:
final cats = [Cat("Winston"), Cat("Bournville")];
final reversedCats = cats.reversed.toList();
// Use the reversed list: e.g. set state, etc.

请参阅 reversed文档

同样,如果scrollDirectionAxis.vertical,那么当reverse为false时,滚动视图从顶部向底部滚动,而当reverse为true时,则从底部向顶部滚动

附注:我建议您不要像这个答案中那样在构建器中索引列表,因为这似乎会导致错误。此外,您的状态与ListView不匹配。如果您正在调试,则ListView上的30个中的10个将在您的状态中成为30个中的20个。

另一个侧面的说明:我尝试过使用 reverse: true,并设置了一个 ScrollController(initialScrollOffset: double.maxFinite),但这并不太好用。


-1

在将数据放入列表后,只需使用可迭代属性(列表)的反向属性。

List<int> i = List();
i.add(3);
i.add(5);
i.add(8);
for (int j  in i.reversed) {
  print('$j');
}

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