题记
—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精。


Flutter是谷歌推出的最新的移动开发框架。

【x1】微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注

【x2】各种系列的视频教程 免费开源 关注 你不会迷路

【x3】系列文章 百万 Demo 随时 复制粘贴 使用

【x4】五分钟视频快速带你浏览构建

【x5】一目了然的源码


如下图所示,你的APP项目中一定会应用到这样的场景。

页面的主体使用 Scaffold 来搭建,代码如下:

class Homepage extends StatefulWidget {@overrideState<StatefulWidget> createState() {return _HomepageState();}
}
class _HomepageState extends State {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("轮播图"),),body: Container(child: buildBanner(),),);}... ...
}

通过层叠布局 Stack 将轮播图与索引指示器组合在一起,代码如下:

  Widget buildBanner() {return Container(height: 200,width: double.infinity,child: Stack(children: [//轮播图片buildBannerWidget(),//指示器buildTipsWidget(),],),);}

轮播的图片是使用 PageView 来装载,代码如下:

  buildBannerWidget() {//懒加载方式构建return PageView.builder(//构建每一个子Item的布局itemBuilder: (BuildContext context, int index) {return buildPageViewItemWidget(index);},//控制器controller: _pageController,//轮播个数 无限轮播 ??itemCount: imageList.length * 10000,//PageView滑动时回调onPageChanged: (int index) {setState(() {currentIndex = index;});},);}

PageView 中构建的每一个子Item 只是一个图片,代码如下:

//轮播显示图片buildPageViewItemWidget(int index) {return Image.asset(imageList[index % imageList.length],fit: BoxFit.fill,);}
  //指示器buildTipsWidget() {return Positioned(bottom: 20,right: 20,child: Container(//内边距padding: EdgeInsets.only(left: 8, right: 8, top: 2, bottom: 2),//圆角边框decoration: BoxDecoration(//背景color: Colors.white,//边框圆角borderRadius: BorderRadius.all(Radius.circular(10))),child:Text("${currentIndex % imageList.length + 1}/${imageList.length}"),),);}

在这里需要初始化的数据如下:

  //轮播图 PageView 使用的控制器PageController _pageController;//定时器自动轮播Timer _timer;//本地资源图片List<String> imageList = ["images/banner1.webp","images/banner2.webp","images/banner3.webp","images/banner4.webp",];//当前显示的索引int currentIndex = 1000;


定时器 Timer 的创建与销毁 代码如下:

  @overridevoid initState() {super.initState();//初始化控制器// initialPage 为初始化显示的子Item_pageController = new PageController(initialPage: currentIndex);///当前页面绘制完第一帧后回调WidgetsBinding.instance.addPostFrameCallback((timeStamp) {startTimer();});}@overridevoid dispose() {super.dispose();_timer.cancel();}

定时器的轮播 触发PageView的自动切换,代码如下:

  void startTimer() {//间隔两秒时间_timer = new Timer.periodic(Duration(milliseconds: 2000), (value) {print("定时器");currentIndex++;//触发轮播切换_pageController.animateToPage(currentIndex,duration: Duration(milliseconds: 200), curve: Curves.ease);//刷新setState(() {});});}

以小编的性格,要实现百万Demo随时复制粘贴肯定是需要源码的

完整源码在这里

当然以小编的性格,肯定是要有视频录制的,点击这里查看,有兴趣 你可以关注一下 西瓜视频 — 早起的年轻人

Flutter PageView 实现的自动轮播图效果 Timer实现的自动轮播效果相关推荐

  1. 超详细轮播图,让你彻底明白轮播图!

    超详细轮播图,让你彻底明白轮播图! 个人博客地址:http://www.zhsh666.xyz/ 刚开始学JavaScript时候很多新手都会尝试写一些简单的小项目,轮播图应该是写的最多的.但是很多时 ...

  2. 新增轮播图跳转web页面、轮播、推荐歌单数据存储( 简易音乐 七)

    新增轮播图跳转web页面.轮播.推荐歌单数据存储( 简易音乐 七) 关于 效果图 第一步,添加引用 新增数据库实体类 修改fragment代码 新增WebActivity页面加载网页 关于   本篇主 ...

  3. 用html css JavaScript写一个功能全面的王者荣耀轮播图 (仿淘宝京东轮播图)通俗易懂

    首先分析一下案例需求: 1.鼠标经过 就显示隐藏左右按钮 2.动态生成小圆圈  有几张图片,就生成几个小圆圈 3.点击小圆圈,移动图片    当然移动的是 ul(大盒子) 4.点击左右按钮, 图片滚动 ...

  4. html怎么做产品轮播图,商品轮播图是什么意思(html轮播图怎么制作)

    但轮播图对用户真的有意义吗?或者它只是设计者用来偷懒,将内容一股脑塞进去的工具呢? 不论将这个问题抛向谁,他们都会告诉你,"轮播图就是个反面模式(anti-pattern)."轮播 ...

  5. php自动轮播图代码,JavaScript如何实现动态轮播图效果?(代码示例)

    本篇文章给大家带来的内容是JavaScript如何实现动态轮播图效果?(代码示例).有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 功能描述: 1.鼠标经过 左右侧箭头显示,鼠标离开 ...

  6. php自动轮播图代码,bootstrap框架实现自动轮播图的代码

    大家在浏览网站时有没有发现,几乎每个网站的首页都有轮播图,作为一个前端开发人员,你会用bootstrap框架写图片轮播吗?这篇文章就给大家分享bootstrap框架实现自动轮播的代码,有一定的参考价值 ...

  7. html轮播图3d翻转,jQuery自适应-3D旋转轮播图

    var slideNumber; //轮播图片的数量 var miniSlideBtn = true; //miniSlideBtn=true为开启滚动按钮 var isableTouch = tru ...

  8. html轮播图鼠标可以暂停,原装js轮播图,鼠标移入停止轮播,移出继续轮播

    要求:1.点击按钮,切换图片: 2.图片能够自动轮播: 3.鼠标移入,轮播停止:移出继续轮播: 知识点:1.定时器:setInterval(): 2.鼠标移入事件:onmouseenter/onmou ...

  9. django 轮播图上传_django之动态轮播图技术的实现

    fn_load_banner();//轮播图 let $banner = $(".banner"); let $picLi= $(".banner .pic li&quo ...

最新文章

  1. context linux,使用selinux contexts
  2. selinux-添加
  3. linux启动守护进程失败,Ubuntu Linux设置守护进程时出错的解决
  4. kylin调优,项目中错误总结,知识点总结,kylin jdbc driver + 数据库连接池druid + Mybatis项目中的整合,shell脚本执行kylin restapi 案例
  5. 重要更新,Office Add-in将全面支持Webview2
  6. APP网络测试要点和弱网模拟
  7. java异常处理方式推荐做法_谈谈Java异常处理这件事儿
  8. 中秋逢国庆 | 盛世华诞 阖家团圆
  9. 存储如何做远程服务器数据备份_如何选择存储用的服务器?
  10. php 苹果支付验证,PHP实现Apple应用内购服务端验证
  11. 【译】BMP格式与JPG格式之间的区别
  12. python如何实现简单的宠物管理系统
  13. gateway报错Parameter 2 of method redisRateLimiter in org.springframework.cloud.gateway.config.GatewayR
  14. HTML常见标签及个人简历制作
  15. 职称计算机考试题库破解版2017,2017职称计算机考试题库及答案
  16. Visual Studio Installer 一直提取文件0B不动怎么办:修改DNS教程
  17. iGoogle创新设计大赛
  18. 速解元宇宙 / Metaverse 迷雾下的行动指南
  19. 冬天别忘晒太阳[整理]
  20. k8s学习-污点和容忍(概念、模版、创建、删除)

热门文章

  1. ECCV 2020 | 空间-角度信息交互的光场图像超分辨,性能优异代码已开源
  2. 速度申请!2020年度腾讯犀牛鸟精英人才培养计划今日发布
  3. OpenCV 4.1.2 发布,都有哪些新特性?
  4. linux whois工具,Linux whois命令
  5. 超赞思想!牛津大学提出 PSViT 让Transformer模型不在冗余!!!
  6. 刚刚!2020“中国高被引学者” 榜单发布:清华、北大、浙大位居内地前三!
  7. 重磅!Yolo v4横空出世!刚刚开源!
  8. CVPR 2020 Oral |目标检测+分割均实现SOTA!厦大提出协同学习网络
  9. 【目标检测实战】目标检测实战之一--手把手教你LMDB格式数据集制作!
  10. 伯克利2019深度学习课程—李沐及其亚马逊同事一起讲述(内附视频链接及PDF下载)