如何在 Flutter 中滚动或跳转到 PageView.builder 或 PageController 的位置?

jaz*_*bpn 13 scroll position pageviews flutter flutter-layout

问题:使用 PageController * 加载网页浏览后无法滚动到 POSITION

像 ViewPager 滚动到 Android 中的特定页面

Widget _buildCarousel(BuildContext context, int selectedIndex) {

    PageController controller = PageController(viewportFraction: 1, keepPage: true);
    return Column(
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        SizedBox(
          // you may want to use an aspect ratio here for tablet support
          height: 400.0,
          width: 240,
          child: PageView.builder(
            itemCount: assetImageList.length,
            controller: controller,
            itemBuilder: (BuildContext context, int itemIndex) {
              return _buildCarouselItem(context, selectedIndex, itemIndex);
            },
          ),
        )
      ],
    );
  }
Run Code Online (Sandbox Code Playgroud)

jaz*_*bpn 12

终于找到了答案。只需设置initialPage: mSelectedPosition属性,如:

child: PageView.builder(
        itemCount: mTemplateModelList.length,
        controller: PageController(initialPage: mSelectedPosition, keepPage: true, viewportFraction: 1),
        itemBuilder: (BuildContext context, int itemIndex) {
          return _buildCarouselItem(context, selectedIndex, itemIndex);
        },
      ),
Run Code Online (Sandbox Code Playgroud)

或者,如果您想在单击按钮后滚动页面,则可以使用JumpTo()方法使用PageController,另一个用户在下面明确提到:@android。


Mar*_*lla 6

目前有 2 个选项可以处理您的请求:

PageView.builder(
  controller: _pageController,
  itemCount: _list.length,
  itemBuilder: (context, index) {
    return GestureDetector(
      onTap: () {
        _pageController.jumpToPage(index); // for regular jump
        _pageController.animateToPage(_position, curve: Curves.decelerate, duration: Duration(milliseconds: 300)); // for animated jump. Requires a curve and a duration
      },
      child: Container();
    );
  }
),
Run Code Online (Sandbox Code Playgroud)