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

cre*_*not 10 dart flutter

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

默认scrollDirectionPageViewAxis.horizontal.所以我的意思是,在常规情况下,我只能向右无限滚动,而不是向左滚动.

插图

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

Rém*_*let 5

没有正式的方法可以在两个方向上进行无限滚动。

但是您可以改为使用PageControllerinitialPage属性。将其设置为一个非常大的值。然后将此值用作“索引0”。

class MyHomePage extends StatelessWidget {
  final PageController pageController = new PageController(initialPage: 4242);

  @override
  Widget build(BuildContext context) {
    return new Scaffold(body: new PageView.builder(
      controller: pageController,
      itemBuilder: (context, _index) {
        final index =  _index - 4242;
        return new Container(
          margin: const EdgeInsets.all(9.0),
          color: Colors.red,
          child: new Center(
            child: new Text(index.toString()),
          ),
        );
      },
    ));
  }
}
Run Code Online (Sandbox Code Playgroud)


cre*_*not 5

我很直接地解决了它。老实说,我写这个问题和发放赏金一定是疯了。

\n\n
// number is irrelevant\nfinal initialPage = (\n    .161251195141521521142025 // :)\n    * 1e6,).round();\nfinal itemCount = getSomeItemCount();\n\nPageView.builder(\n  pageController: PageController(\n    initialPage: initialPage,\n  ),\n  itemBuilder: (context, page) {\n    final index = itemCount - (initialPage - page - 1) % itemCount - 1;\n    return getPageContent(index);\n  },\n);\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n