如何使用构建器将PageView扩展到两侧?

时间:2018-05-13 22:40:36

标签: dart flutter

使用PageView.builder我可以获得无限的页面列表,但只能在一个方向上,即在另一个方向上是有限的!

scrollDirection的默认PageViewAxis.horizontal。所以我的意思是,在常规情况下,我只能无限滚动到右边,但不能向左滚动。

illustration

我希望能够在双向 中无限滚动。我没有找到办法做到这一点,尤其是因为我希望itemBuilder能够给出负面指数,这是我从未见过的。这让我想知道这是否已经实现,但我对自定义解决方案持开放态度,并会尝试提出一些东西。

2 个答案:

答案 0 :(得分:3)

没有官方方式在两个方向都有无限滚动。

但您可以使用PageController的{​​{1}}属性。将它设置为荒谬的大价值。然后使用此值作为“索引0”。

initialPage

答案 1 :(得分:2)

我很直接地解决了这个问题。老实说,我一定不在写这个问题并发出赏金。

// number is irrelevant
final initialPage = (
    .161251195141521521142025 // :)
    * 1e6,).round();
final itemCount = getSomeItemCount();

PageView.builder(
  pageController: PageController(
    initialPage: initialPage,
  ),
  itemBuilder: (context, page) {
    final index = itemCount - (initialPage - page - 1) % itemCount - 1;
    return getPageContent(index);
  },
);

我不确定我是否应该赞扬Rémi Rousselet因为我在他提出答案之前使用这种方法。我只是想提一下他,因为这个问题得到了不应有的流量,他帮助我解决了我的问题:)