当前位置: 首页 > news >正文

Flutter 轮播图封装

Flutter 轮播图封装

PageView组件

支持滚动、懒加载、按需渲染,可以用来实现分页加载、轮播图,可以通过scrollDirection 设置滚动的方向。

效果图

flutter PageView 实现轮播图

实现

@overridevoidinitState(){super.initState();// 组件初始化时启动定时器(可选)_setTimer();}@overridevoiddispose(){_pageController.dispose();super.dispose();}List<int>_list=List.generate(10,(index)=>index+1);int _currentIndex=0;PageController _pageController=PageController();Timer?_timer;/// 设置定时器void_setTimer(){_timer?.cancel();_timer=Timer.periodic(Duration(seconds:3),(timer){// 3s 自动轮播_currentIndex+=1;if(_currentIndex==_list.length){_currentIndex=0;}_jumpPage(_currentIndex);setState((){});});}void_cancelTimer(){_timer?.cancel();}void_jumpPage(int index){// 跳转到指定页面,动画平滑过渡_pageController.animateToPage(index,duration:constDuration(milliseconds:300),curve:Curves.linear).then((value){// 重启定时器_setTimer();},);}@overrideWidgetbuild(BuildContext context){returnContainer(color:Colors.blue,child:Stack(children:[PageView(onPageChanged:(index){},// 也可以在此处设置_curIndex = index, 这样左右滑动也可以跳转,但是指示器动画不好看controller:_pageController,// 控制器children:List.generate(_list.length,(index){// 轮播returnContainer(alignment:Alignment.center,child:Text("第${index + 1}轮播图",style:constTextStyle(color:Colors.white),),);}),),Positioned(bottom:10,left:0,right:0,child:Row(mainAxisAlignment:MainAxisAlignment.center,children:List.generate(_list.length,(index){returnGestureDetector(onTap:(){// 点击指示器,跳转到对应的页面_cancelTimer();// 取消定时器, 重置计时时间_jumpPage(index);setState((){_currentIndex=index;});},child:Container(margin:constEdgeInsets.only(left:10),height:20,width:20,decoration:BoxDecoration(borderRadius:constBorderRadius.all(Radius.circular(20)),color:_currentIndex==index?Colors.red:Colors.white),// 指示器颜色判读),);}),))],),);};
http://www.cnnetsun.cn/news/65325.html

相关文章:

  • CompTIA CV0-004 Cloud+ 認證考試完整介紹
  • PyTorch安装避坑指南 + vLLM性能调优技巧
  • AutoGPT与Metabase Plus集成:增强版报表自动化
  • PyTorch安装后如何加载Qwen3-VL-8B进行多模态推理
  • 【收藏必看】2025大模型技术岗位全景图:15大方向详解,助你成为AI人才
  • LobeChat支持GraphQL接口吗?API扩展能力分析
  • LobeChat能否实现对话分享功能?链接公开化实践
  • 全球工程软件格局重塑:中国AI原生平台的机会窗口
  • 【Dubbo】接口特性与开发注意事项
  • 测试环境管理的最佳实践
  • Miniconda环境下安装PyTorch GPU版的完整流程
  • AI推理的“哥白尼革命”!何恺明团队推翻LLM,将抽象推理重新定义为视觉问题
  • 深度学习训练器框架全面对比指南
  • 火山引擎AI大模型新玩法:结合vLLM实现高效推理
  • 16、GTK+ 样式定制全解析
  • LobeChat是否支持Service Worker?离线访问能力构建
  • 重学计算机基础013:减法运算的底层逻辑——为什么没有“减法器”?
  • apk pure安全性争议下,本地大模型成新趋势
  • LobeChat能否支持NFT头像展示?个性化形象设定
  • LobeChat + Kubernetes:大规模部署AI前端界面的可行路径
  • 20万以内家用新能源SUV怎么选?纯电动车型主动安全系统深度对比
  • 基于28DR+VU13P的宽带高速信号处理板
  • AutoGPT镜像上线促销:限时赠送免费Token额度
  • 达人内容乱+不合规?KOL/KOS/KOC/KOC/KOX内容协同+合规管控,品牌调性不跑偏
  • 解锁优质创意素材:这四个专业平台值得收藏
  • 毕设分享 深度学习遮挡下的人脸识别(源码+论文)
  • Python UV搭配Miniconda:下一代包管理体验
  • 实验室装修,怎样做更省心?
  • Redis多数据源配置指南
  • AutoGPT支持ONNX Runtime部署了吗?跨框架兼容测试