一,概述

PageView 是一个滑动视图列表,它也是继承至 CustomScrollView 的。

二,构造函数

  • 类命构造函数PageView

    • PageView 

      • 使用场景:创建一个可滚动列表
      • 构造函数 
          PageView({
        Key key,
        this.scrollDirection = Axis.horizontal,
        this.reverse = false,
        PageController controller,
        this.physics,
        this.pageSnapping = true,
        this.onPageChanged,
        List<Widget> children = const <Widget>[],
        this.dragStartBehavior = DragStartBehavior.start,
        }) : controller = controller ?? _defaultPageController,
        childrenDelegate = SliverChildListDelegate(children),
        super(key: key);
  • 命名构造函数
    • PageView.builder
      • 使用场景:创建一个滚动列表,指定数量
      • 重要参数:
      • typedef IndexedWidgetBuilder = Widget Function(BuildContext context, int index);
        * @required IndexedWidgetBuilder itemBuilder : 构建子控件
        * typedef IndexedWidgetBuilder = Widget Function(BuildContext context, int index); 构建子控件的数目
      • 构造函数

          PageView.builder({
        Key key,
        this.scrollDirection = Axis.horizontal,
        this.reverse = false,
        PageController controller,
        this.physics,
        this.pageSnapping = true,
        this.onPageChanged,
        @required IndexedWidgetBuilder itemBuilder,
        int itemCount,
        this.dragStartBehavior = DragStartBehavior.start,
        }) : controller = controller ?? _defaultPageController,
        childrenDelegate = SliverChildBuilderDelegate(itemBuilder, childCount: itemCount),
        super(key: key);
    • PageView.custom
      • 使用场景:创建一个可滚动的列表,自定义子项

        构造函
      • 重要参数:
        * final SliverChildDelegate childrenDelegate;使用代理的方式构建子类列表
      • 构造函数
      • PageView.custom({    Key key,
        this.scrollDirection = Axis.horizontal,
        this.reverse = false,
        PageController controller,
        this.physics,
        this.pageSnapping = true,
        this.onPageChanged,
        @required this.childrenDelegate,
        this.dragStartBehavior = DragStartBehavior.start,
        }) : assert(childrenDelegate != null),
        controller = controller ?? _defaultPageController,
        super(key: key);

三,参数解析

  • final Axis scrollDirection: 视图滚动的方向。Defaults to [Axis.horizontal]
  • final bool reverse:是否反转方向。  Defaults to false
    • ScrollDirection 为 [Axis.horizontal]时,

         Reversefalse时,从左到右开始;
         Reversetrue时, 从右到左开始;
    • ScrollDirection 为 [Axis.vertical]时,
         Reversefalse时,从上到下开始;
         Reversetrue时, 从下到上开始;
  • final PageController controller:控制台。用于监听视图的滚动情况。页面视图应该如何响应用户输入。例如,确定用户停止拖动页视图后,页视图如何继续动画。
  • final ValueChanged<int> onPageChanged:索引改变时触发。
  • final bool pageSnapping:设置为 false 以禁用页面捕捉,对自定义滚动行为很有用。
  • final ScrollPhysics physics:页面视图如何响应用户输入,即滚动的动画表现。
  • final DragStartBehavior dragStartBehavior:确定处理拖动开始行为的方式

四,示例demo

  • demo
import 'package:flutter/material.dart';

void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: new MyPageHome(title: 'pageViewDemo',),
);
}
} class MyPageHome extends StatefulWidget { //属性
String title;
//构造函数
MyPageHome({Key key,this.title}):super(key:key); @override
State<StatefulWidget> createState() {
// TODO: implement createState
return new MyPageHomeState();
}
} class MyPageHomeState extends State<MyPageHome> {
@override
Widget build(BuildContext context) { return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title)
), body: new Center(
child: new Container(
width: ,
height: ,
child: new PageView(
children: <Widget>[
Image.network('https://ws1.sinaimg.cn/large/0065oQSqgy1fwgzx8n1syj30sg15h7ew.jpg'),
Image.network('https://ws1.sinaimg.cn/large/0065oQSqly1fw8wzdua6rj30sg0yc7gp.jpg'),
Image.network('https://ws1.sinaimg.cn/large/0065oQSqly1fw0vdlg6xcj30j60mzdk7.jpg'),
Image.network('https://ws1.sinaimg.cn/large/0065oQSqly1fuo54a6p0uj30sg0zdqnf.jpg'),
],
),
),
),
);
}
}
  • 效果图

五,官方文档  

官方文档

【Flutter学习】基本组件之基本滑动PageView组件的更多相关文章

  1. Flutter学习笔记(24)--SingleChildScrollView滚动组件

    如需转载,请注明出处:Flutter学习笔记(23)--多 在我们实际的项目开发中,经常会遇到页面UI内容过多,导致手机一屏展示不完的情况出现,以Android为例,在Android中遇到这类情况的做 ...

  2. Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解

    如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...

  3. Flutter学习笔记(18)--Drawer抽屉组件

    如需转载,请注明出处:Flutter学习笔记(18)--Drawer抽屉组件 Drawer(抽屉组件)可以实现类似抽屉拉出和推入的效果,可以从侧边栏拉出导航面板.通常Drawer是和ListView组 ...

  4. Flutter学习笔记(13)--表单组件

    如需转载,请注明出处:Flutter学习笔记(13)--表单组件 表单组件是个包含表单元素的区域,表单元素允许用户输入内容,比如:文本区域,下拉表单,单选框.复选框等,常见的应用场景有:登陆.注册.输 ...

  5. 【Flutter学习】页面布局之基础布局组件

    一,概述 Flutter中拥有30多种预定义的布局widget,常用的有Container.Padding.Center.Flex.Row.Colum.ListView.GridView.按照< ...

  6. Flutter学习笔记(12)--列表组件

    如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...

  7. Flutter学习笔记(14)--StatefulWidget简单使用

    如需转载,请注明出处:Flutter学习笔记(14)--StatefulWidget简单使用 今天上班没那么忙,突然想起来我好像没StatefulWidget(有状态组件)的demo,闲来无事,写一个 ...

  8. Qt qml pageview 左右滑动分页组件

    [先看效果] [下载]http://download.csdn.net/detail/surfsky/8516949 [调用] 分页视图 左右分页滑动列表组件 示例 PageView{ id: pv ...

  9. Flutter学习笔记(9)--组件Widget

    如需转载,请注明出处:Flutter学习笔记(9)--组件Widget 在Flutter中,所有的显示都是Widget,Widget是一切的基础,我们可以通过修改数据,再用setState设置数据(调 ...

随机推荐

  1. Java Web学习总结(12)Filter过滤器

    一,Filter简介 Filter也称之为过滤器,Filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理. 二,Filter开发步骤 1)编写一个 ...

  2. spring-boot整合mybaits多数据源动态切换案例

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...

  3. SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法

    SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法 在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备 ...

  4. 编写现代 CSS 代码的 20 个建议

    明白何谓Margin Collapse 不同于其他很多属性,盒模型中垂直方向上的Margin会在相遇时发生崩塌,也就是说当某个元素的底部Margin与另一个元素的顶部Margin相邻时,只有二者中的较 ...

  5. 几幅图片弄清DFT、DTFT、DFS的关系 数字信号处理

    原址:http://www.cnblogs.com/BitArt/archive/2012/11/24/2786390.html 很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DF ...

  6. C#读取csv、xls、sql数据库的实现

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  7. Yii2.0 for update 行级锁

    当我们遇到存在高并发并且对于数据的准确性有要求的场景,需要了解和使用for update 需要注意的点: 1.InnoDB默认是行级别的锁,当有明确指定的主键时候,是行级锁.否则是表级别 2.for ...

  8. Tarjan 总结

    Tarjan 基础 dfn[i]: 在dfs中该节点被搜索的次序(时间戳). low[i]: 为i或i的子树能够追溯到的最早的栈中节点的次序号. 当 dfn[i] == low[i] 时,为i或i的子 ...

  9. Bootstrap Date Range Picker

    var optionSet1 = { startDate: moment().subtract(29, 'days'), endDate: moment(), minDate: '12/21/2012 ...

  10. 测开之路三十四:html常用标签

    网页的结构: HTML:超文本标记语言是迄今为止网络上应用最为广泛的语言,也是构成网页文档的主要语言.HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字.图形.动画.声音.表格.链 ...