Flutter 自定义ScrollPhysics实现PageView禁止左滑或右滑

本文介绍了如何在Flutter中自定义ScrollPhysics,以实现PageView禁止左滑或右滑的功能。通过分析ClampingScrollPhysics的源码,了解到在applyBoundaryConditions方法中判断是否到达边界并返回相应的值可以控制滑动。通过创建CustomScrollPhysicsController并继承自ClampingScrollPhysics,实现了根据需求禁止单向滑动的PageView效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 PageView禁止左滑或右滑效果图

在这里插入图片描述


2 PageView

PageView可实现Widget的整页滑动切换,可用于轮播图、App左右切换TAB页面、引导页切换页面等场景。

2.1 PageView示例

class PageViewPage extends StatefulWidget {
   
  const PageViewPage({
   Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _PageViewPageState();
}

class _PageViewPageState extends State<PageViewPage> {
   
  @override
  Widget build(BuildContext context) {
   
    return Scaffold(
      body: PageView(
        children: List.generate(3, _buildChildPage),
      ),
    );
  }

  Widget _buildChildPage(int index) {
   
    return Container(
      color: Colors.primaries[index * 2],
      child: Center(
        child: Text(
          'Page  $index',
          style: const TextStyle(color: Colors.white, fontSize: 24),
        ),
      ),
    );
  }
}

画面效果
在这里插入图片描述


2.2 ScrollPhysics

ScrollPhysics 用于确定可滑动的Widget的滑动物理特效,常用几种的ScrollPhysics如下:

  • NeverScrollableScrollPhysics
    不允许左右滑动。
  • BouncingScrollPhysics
    iOS风格的滑动效果,有物理弹性,和上图的滑动效果一致。
  • ClampingScrollPhysics
    Android风格的滑动效果,无弹性效果,滑到底部后不允许继续滑。

PageView的physics属性的默认值是PageScrollPhysics,若不自己设置,最终的滑动效果会根据系统的特性来展示。

3 自定义ScrollPh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值