Flutter - PageView(1) 基本用法

news2024/10/3 4:32:57

如果要实现页面切换和 Tab 布局,我们可以使用 PageView 组件。需要注意,PageView 是一个非常重要的组件,因为在移动端开发中很常用,比如大多数 App 都包含 Tab 换页效果、图片轮动以及抖音上下滑页切换视频功能等等,这些都可以通过 PageView 轻松实现。
在这里插入图片描述
1 PageView 简单使用

PageView(
          scrollDirection:Axis.horizontal,
          allowImplicitScrolling: true,
          children: <Widget>[
            MyItemContainerState(colors: Colors.yellow,pageName: "yellow",),
            MyItemContainerState(colors: Colors.red,pageName: "red",),
            MyItemContainerState(colors: Colors.green,pageName: "green",),
            MyItemContainerState(colors: Colors.blue,pageName: "blue",),
            MyItemContainerState(colors: Colors.deepPurple,pageName: "deepPurple",)

          ],
        )
class MyItemContainerState extends StatefulWidget {
  const MyItemContainerState({Key? key,required this.colors,required this.pageName}) : super(key: key);


  final MaterialColor colors ;
  final String pageName ;
  
  State<MyItemContainerState> createState() {
    // TODO: implement createState
    return ItemContainerState(colors,pageName);
  }
}

class MyItemContainerState extends StatefulWidget {
  const MyItemContainerState({Key? key,required this.colors,required this.pageName}) : super(key: key);


  final MaterialColor colors ;
  final String pageName ;
  
  State<MyItemContainerState> createState() {
    // TODO: implement createState
    return ItemContainerState(colors,pageName);
  }
}

class ItemContainerState extends State<MyItemContainerState> with AutomaticKeepAliveClientMixin{

  MaterialColor colors ;
  String pageName ;
  ItemContainerState(this.colors,this.pageName);

  
  // TODO: implement wantKeepAlive
  bool get wantKeepAlive => true;

  
  Widget build(BuildContext context) {
    super.build(context);
    print("创建$pageName");
    // TODO: implement build
    return  Container(
      width: double.infinity,
      height: double.infinity,
      color: colors,
      alignment: Alignment.center,
      child: Text(pageName,style: TextStyle(fontSize: 50,color: Colors.white),),
    );
  }

  
  void dispose() {
    // TODO: implement dispose
    print("销毁$pageName");
    super.dispose();

  }

}

注1 scrollDirection:Axis.horizontal, 控制PageView的滑动方向
Axis.horizontal 是横着滑
Axis.vertical 竖着滑
在这里插入图片描述
注 2 allowImplicitScrolling: true,
为true 时 ,缓存当前页的前一页和后一页
为false 时 ,不缓存,滑出当前页及时销毁当前页

1 下面日志打印的是 allowImplicitScrolling = false 的情况
在这里插入图片描述
2 下面是 allowImplicitScrolling = true 的情况
2.1第一次运行程序,创建了 yellow 和 red 两个界面
在这里插入图片描述
2.2 滑动到第二个界面是 创建了 green 界面 ,并且没有销毁 yellow 界面
在这里插入图片描述
2.3 滑动到第三个green界面时 创建了 blue 界面 且销毁了yellow 界面
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【10秒在圣诞节做出温馨的圣诞树】

&#x1f935;‍♂️ 个人主页老虎也淘气 个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f44d;&#x1f3fb; 收藏…

1年就晋升了3级,全靠这份阿里大牛赠送的这份堪称神级架构师手册

又逢“金九银十”&#xff0c;年轻的毕业生们满怀希望与忐忑&#xff0c;去寻找、竞争一个工作机会。已经在职的开发同学&#xff0c;也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而&#xff0c;面试人群众多&#xff0c;技术市场却相对冷淡&#xff0c;…

spring教程

spring 1.spring ioc ​ IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 ​ Spring 通过 Io…

[附源码]Python计算机毕业设计Django葡萄酒销售管理系统论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

明道云与智齿科技共推个性化CRM+呼叫中心联合方案

背景介绍 近来&#xff0c;B2B企业用人及获客成本居高不下的问题愈发显现&#xff0c;企业为提高核心竞争力&#xff0c;利用信息技术协调企业与客户在销售、营销和服务上的交互&#xff0c;在优化管理方式的同时&#xff0c;向客户提供个性化交互服务&#xff0c;以达到吸引新…

[激光原理与应用-59]:激光器 - 光学 - 脉冲激光器的参数解析(能量、脉冲、周期、功率)

目录 第1章 光波的基本参数 1.1 光速 1.2 波长与频率 1.3 频率 1.4 电磁波光谱 1.5 光波的能量 第2章 脉冲激光器的参数 2.1 脉冲 2.2 脉冲宽度&#xff1a;单个脉冲作用时间。 2.3 脉冲周期/重复频率 2.4 单脉冲能量 它山之石&#xff1a; 1、激光重复频率&#…

python+Eclipse+pydev环境搭建

本文重点介绍使用Eclipsepydev插件来写Python代码&#xff0c; 以及在Mac上配置EclipsePydev 和Windows配置EclipsePydev 编辑器&#xff1a;Python 自带的 IDLE 简单快捷&#xff0c; 学习Python或者编写小型软件的时候。非常有用。 编辑器: Eclipse pydev插件 1. Eclips…

【我不熟悉的javascript】字符串正则表达式的使用match和matchAll方法

String.prototype.match() match() 方法检索返回一个字符串匹配正则表达式的结果。 参数必须是一个正则表达式如果使用 g 标志&#xff0c;则将返回与完整正则表达式匹配的所有结果&#xff0c;但不会返回捕获组。如果未使用 g 标志&#xff0c;则仅返回第一个完整匹配及其相关…

编程常见的问题(四) 连接池

编程常见的问题(四) 连接池 今天&#xff0c;我们来聊聊使用连接池需要注意的问题。 在上一讲&#xff0c;我们学习了使用线程池需要注意的问题。今天&#xff0c;我再与你说说另一种很重要的池化技术&#xff0c;即连接池。 我先和你说说连接池的结构。连接池一般对外提供获…

跨域问题及html引用JavaScript脚本问题

最近在学习 JavaScript&#xff0c;突然想到在上一家公司时跟前端同事调试 web 功能&#xff0c;然后就想着自己手动也搭一个 Http 的服务&#xff0c;这个服务是跑在一个 arm 设备上的&#xff0c;然后呢在局域网内在浏览器通过输入如 192.168.2.100:8000 这样来访问设备&…

Web(十一)JavaScript知识训练-日期对象

1、 下列关于JavaScript中Date日期对象的描述正确的是&#xff08; C&#xff09; A、 getMonth()返回Date对象的月份&#xff0c;其值介于1-12之间 B、 getDate()返回Date对象的一个月中的每一天&#xff0c;其值介于1-31之间 C、 getHours()返回Date对象的小时数&#xff0c;…

为什么要来长沙投资?我从长沙招商新政策中找到了答案!

凭借着一系列好吃的、好玩的、好看的产品&#xff0c;长沙已经顺利成为全国热门旅游目的地&#xff0c;成为全世界都小有名气的旅游城市。 作为一名在长沙创业的长沙人&#xff0c;笔者此前经常会向北上广深的朋友们推荐长沙好吃的、好玩的&#xff0c;也会向湘籍科技互联网人…

【软件测试】测试人:明明项目已经通过了各种的测试,交付还会出现问题?

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 为什么软件明明通过…

【前端开发学习】3.BootStrap

文章目录1 BootStrap2 栅格系统3 container4 面板5 案例&#xff1a;用户登录1.阴影2. 登录按钮3. 居中4. 表单项6 案例&#xff1a;后台管理7 图标8 BootStrap 依赖1 BootStrap 别人写好的 CSS 样式&#xff0c;如果想要这个 BootStrap&#xff1a; 下载 BootStrap&#xff…

Jupyter Notebook 如何安装 + 使用?【审核5次重磅发布】

人生苦短 我用python 给大家介绍一下关于Jupyter Notebook的用法 关于它的组成部分就先不在这里详细解说啦~ 毕竟我可太懂你们啦~ 文章太长就会吃灰的~ 一、什么是Jupyter Notebook&#xff1f; 1. 简介 Jupyter Notebook是基于网页的用于交互计算的应用程序。 其可被应用于…

数据结构——插入排序和希尔排序

坚持看完&#xff0c;结尾有思维导图总结 这里写目录标题插入排序插入排序的步骤什么是插入排序插入排序的单趟排序单趟排序的步骤插入排序的图解完整的插入排序排序插入排序的程序插入排序的常见问题关于插入排序的时间复杂度分析希尔排序希尔排序的图解希尔排序的步骤希尔排序…

微服务框架 SpringCloud微服务架构 多级缓存 47 Lua 语法入门 47.3 条件控制、函数

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存47 Lua 语法入门47.3 条件控制、函数47.3.1 函数47.3.2 条件控制47 Lua 语法入门 47.3 条件控制、函数…

流水线Flow【可持续集成自动化部署】解决方案

文章目录前言一、准备项目代码1.默认的项目2.浏览器访问二、使用步骤1.进入工作台2.创建流水线3.代码源4.代码扫描5.单元测试6.代码构建7.主机部署8.部署脚本三、运行测试1.运行流水线2.测试报告3.访问项目总结前言 「流水线」&#xff0c;又名「Flow」&#xff0c;是一款企业…

Java+MySQL基于SSM的学生宿舍管理系统的设计与实现 开题 论文

随着我国教育制度的改革,各大高校一直在不断的扩招相对应的学生的数量也在不断的增加。在学生数量增加之后学校后勤人员就需要对后勤部分更加精准的进行管理,其中宿舍管理就是后勤管理中比较重要的一个组成部分。如何能够对学生的宿舍信息进行更加科学合理的管理是当前大多数高…

单张图像三维人脸重建必备入门face3d--pipeline

作者&#xff1a;小灰灰 来源&#xff1a;投稿 编辑&#xff1a;学姐 上期传送门&#x1f449;单张图像三维人脸重建必备入门face3d—3DMM 三维人脸的必备入门就要看Yao Feng写的https://github.com/YadiraF/face3d 这个代码主要介绍了3D人脸的一些功能&#xff0c;处理网格数…