【问题标题】:Is it possible to set PageView in Flutter to be swipeable only from the edge?是否可以将 Flutter 中的 PageView 设置为只能从边缘滑动?
【发布时间】:2021-11-03 13:32:10
【问题描述】:

我有一个简单的 PageView 小部件,用于控制两个屏幕/视图之间的导航

final PageController _pageController = PageController(
  initialPage: 0,
);

@override
void dispose() {
  _pageController.dispose();
  super.dispose();
}


PageView(
  controller: _pageController,
  children: [
      firstScreen(),
      secondScreen(),
  ],
);

现在用户可以在屏幕的任何部分滑动一点点,视图就会发生变化。

有没有办法以某种方式限制用户只能使用 PageView 从边缘滑动?

【问题讨论】:

    标签: flutter flutter-pageview


    【解决方案1】:

    您可以禁用PageView 滚动并将其包装在GestureDetector 中,使用它的onPanUpdate 方法使scrollController 更改其索引。 像这样的,

    int pageViewIndex = 0;
    
    GestureDetector(
        onPanUpdate: (details) {
            Offset position = details.localPosition;
            int xPosition = position.dx;
    
            // USE THIS xPosition TO VALIDATE YOUR DESIRED xPosition
            if (!isValidXPosition) return;
    
            // Swiping in right direction.
            if (details.delta.dx > 0 && pageViewIndex < pagesLength - 1) {
                setState(() {
                     pageViewIndex = pageViewIndex + 1;
                });
                _pageController.animateToPage(pageViewIndex);
            }
            // Swiping in left direction.
            if (details.delta.dx < 0 && pageViewIndex > 0) {
                setState(() {
                     pageViewIndex = pageViewIndex - 1;
                });
                _pageController.animateToPage(pageViewIndex);
            }
        },
        child: PageView(
            physics: NeverScrollableScrollPhysics(),
            controller: _pageController,
            children: [
                firstScreen(),
                secondScreen(),
            ],
        ),
    )
    

    希望对您有所帮助。 如果需要更多帮助,请发表评论..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      相关资源
      最近更新 更多