flutter Pageview组件

PageView组件说明

组件说明

属性 说明
scrollDirection 滑动反向 Axis.vertical上下滑动 Axis.horizontal左右滑动
reverse 是否反转 true从最后一个记0
controller PageController见下文
physics 滚动方式
pageSnapping 是否有回弹效果
onPageChanged 监听切换
children 子组件
dragStartBehavior 处理拖拽开始行为方式
  • PageController的属性说明
属性 说明
initialPage 初始化第一次默认在第几个
keepPage 是否保存当前 Page 的状态 true下次回复对应保存的 page initialPage被忽略 false总是从 initialPage 开始
viewportFraction 占屏幕多少,1为占满整个屏幕

PageView,PageController的源码

  • 2.1、PageView源码

    PageView({
    Key? key,
    this.scrollDirection = Axis.horizontal,//滑动方向
    this.reverse = false,//是否反转,true 从最后一个记0
    PageController? controller,//控制初始化
    this.physics,//滚动方式
    this.pageSnapping = true,//是否有回弹效果
    this.onPageChanged,//监听切换
    List<Widget> children = const <Widget>[],//子组件
    this.dragStartBehavior = DragStartBehavior.start,//处理拖拽开始行为方式
    this.allowImplicitScrolling = false,
    this.restorationId,
    this.clipBehavior = Clip.hardEdge,
    }) : assert(allowImplicitScrolling != null),
    assert(clipBehavior != null),
    controller = controller ?? _defaultPageController,
    childrenDelegate = SliverChildListDelegate(children),
    super(key: key);

  • 2.2 PageController的源码

    PageController({
    this.initialPage = 0,//初始化第一次默认在第几个
    this.keepPage = true,//是否保存当前 Page 的状态,如果保存,下次回复对应保存的 page,initialPage被忽略,如果为 false 。下次总是从 initialPage 开始
    this.viewportFraction = 1.0,//占屏幕多少,1为占满整个屏幕
    }) : assert(initialPage != null),
    assert(keepPage != null),
    assert(viewportFraction != null),
    assert(viewportFraction > 0.0);

简单demo

复制代码
return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("PageView学习"),
        ),
        body: Center(
          child: PageView(
            scrollDirection: Axis.horizontal,
            reverse: false,
            controller: PageController(
              initialPage: 1,
              keepPage: false,
              viewportFraction: 0.8

            ),
            children: [
              Container(
                color: Colors.red,
                child: Text("我是页面0"),
              ),
              Container(
                color: Colors.blue,
                child: Text("我是页面1"),
              ),
              Container(
                color: Colors.green,
                child: Text("我是页面2")
              )
            ],

          ),
        ),
      ),
    );
相关推荐
用户66116655296522 小时前
Futter3 仿抖音我的页面or用户详情页
flutter
Haha_bj2 小时前
Flutter ——device_info_plus详解
android·flutter·ios
前端小伙计2 小时前
Android/Flutter 项目统一构建配置最佳实践
android·flutter
微祎_3 小时前
Flutter for OpenHarmony:形状拼图游戏开发全指南 - 基于Flutter CustomPaint的可拖拽矢量拼图实现与设计理念
flutter
不爱吃糖的程序媛4 小时前
解锁Flutter鸿蒙开发新姿势——flutter_ohfeatures插件集实战指南
flutter
一只大侠的侠5 小时前
React Native开源鸿蒙跨平台训练营 Day16自定义 useForm 高性能验证
flutter·开源·harmonyos
子春一5 小时前
Flutter for OpenHarmony:绿氧 - 基于Flutter的呼吸训练应用开发实践与身心交互设计
flutter·交互
ujainu5 小时前
告别杂乱!Flutter + OpenHarmony 鸿蒙记事本的标签与分类管理(三)
android·flutter·openharmony
ZH15455891316 小时前
Flutter for OpenHarmony Python学习助手实战:API接口开发的实现
python·学习·flutter
一只大侠的侠6 小时前
Flutter开源鸿蒙跨平台训练营 Day11从零开发商品详情页面
flutter·开源·harmonyos