Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何使用builder将PageView扩展到两侧?_Dart_Flutter - Fatal编程技术网

Dart 如何使用builder将PageView扩展到两侧?

Dart 如何使用builder将PageView扩展到两侧?,dart,flutter,Dart,Flutter,使用PageView.builder我可以得到无限的页面列表,但只能在一个方向上,即在另一个方向上是有限的 PageView的默认scrollDirection是Axis.horizontal。我的意思是,在常规情况下,我只能无限向右滚动,而不能向左滚动 我希望能够在两个方向上无限滚动。我没有找到这样做的方法,尤其是因为我希望itemsbuilder会给出我从未见过的负指数。这让我想知道这是否已经实现了,但我对定制解决方案持开放态度,并将尝试提出一些解决方案。没有官方的方法可以在两个方向上都有

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

PageView
的默认
scrollDirection
Axis.horizontal
。我的意思是,在常规情况下,我只能无限向右滚动,而不能向左滚动

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

没有官方的方法可以在两个方向上都有一个无限滚动条

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


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

// 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);
  },
);

我不确定我是否应该赞扬他,因为在他提出答案之前,我正在使用这种方法。我只想提到他,因为这个问题的流量越来越大,他帮我解决了我的问题:)

我也考虑过这个问题。我面临的唯一问题是如何得到某种循环,我向左滚动,向右“返回”,就好像它是一个戒指。我将为此创建自己的
小部件
。您只需使用模运算符和一个简单的数学:
如果(index<0)index=itemCount+index
。这不在你的问题中,尽管你要求的是否定指标
我希望itemBuilder会给出负索引,然后
别担心。反正我也不在乎赏金了。我现在是7k了,哈,答案今天仍然有效,还是PageView现在处理负范围?
// 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);
  },
);