flutter 轮播组件 Swiper
flutter_swiper
flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配.
先放上github上的几张图看一下效果。
截图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yNhDhxPj-1573730731356)(https://github.com/jzoom/flutter_swiper/raw/master/example/res/1.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lF1E8Xkq-1573730731357)(https://github.com/jzoom/flutter_swiper/raw/master/example/res/2.gif)]
图就先放到这里,我们看一下用法。
安装
增加
flutter_swiper: ^1.0.6 //请在pub上查看最新版本
到项目根目录下的 pubspec.yaml ,并且根目录运行命令行
flutter packages get
基本使用
/** Created by 李卓原 on 2018/9/19.* email: zhuoyuan93@gmail.com**/import 'package:flutter/material.dart';
import 'package:flutter_swiper/flutter_swiper.dart';class SwiperPage extends StatefulWidget {@overrideSwiperPageState createState() {return SwiperPageState();}
}class SwiperPageState extends State<SwiperPage> {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('轮播组件'),),body: Container(width: MediaQuery.of(context).size.width,height: 200.0,child: Swiper(itemBuilder: _swiperBuilder,itemCount: 3,pagination: new SwiperPagination(builder: DotSwiperPaginationBuilder(color: Colors.black54,activeColor: Colors.white,)),control: new SwiperControl(),scrollDirection: Axis.horizontal,autoplay: true,onTap: (index) => print('点击了第$index个'),)),);}Widget _swiperBuilder(BuildContext context, int index) {return (Image.network("http://via.placeholder.com/350x150",fit: BoxFit.fill,));}
}
Swiper基本参数
参数 | 默认值 | 描述 |
---|---|---|
scrollDirection | Axis.horizontal | 滚动方向,设置为Axis.vertical如果需要垂直滚动 |
loop | true | 无限轮播模式开关 |
index | 0 | 初始的时候下标位置 |
autoplay | false | 自动播放开关. |
autoplayDely | 3000 | 自动播放延迟毫秒数. |
autoplayDiableOnInteraction | true | 当用户拖拽的时候,是否停止自动播放. |
onIndexChanged | void onIndexChanged(int index) | 当用户手动拖拽或者自动播放引起下标改变的时候调用 |
onTap | void onTap(int index) | 当用户点击某个轮播的时候调用 |
duration | 300.0 | 动画时间,单位是毫秒 |
pagination | null |
设置 new SwiperPagination() 展示默认分页指示器
|
control | null |
设置 new SwiperControl() 展示默认分页按钮
|
分页指示器 pagination
分页指示器继承自 SwiperPlugin
,SwiperPlugin
为 Swiper
提供额外的界面.设置为new SwiperPagination()
展示默认分页.
参数 | 默认值 | 描述 |
---|---|---|
alignment | Alignment.bottomCenter | 如果要将分页指示器放到其他位置,那么可以修改这个参数 |
margin | const EdgeInsets.all(10.0) | 分页指示器与容器边框的距离 |
builder | SwiperPagination.dots |
目前已经定义了两个默认的分页指示器样式: SwiperPagination.dots 、 SwiperPagination.fraction ,都可以做进一步的自定义.
|
简单的自定义:
pagination: new SwiperPagination(builder: DotSwiperPaginationBuilder(color: Colors.black54,activeColor: Colors.white,))
完全自定义分页组件:
new Swiper(...,pagination:new SwiperCustomPagination(builder:(BuildContext context, SwiperPluginConfig config){return new YourOwnPaginatipon();})
);
控制按钮 control
控制按钮组件也是继承自 SwiperPlugin
,设置 new SwiperControl()
展示默认控制按钮.
参数 | 默认值 | 描述 |
---|---|---|
iconPrevious | Icons.arrow_back_ios | 上一页的IconData |
iconNext | Icons.arrow_forward_ios | 下一页的IconData |
color | Theme.of(context).primaryColor | 控制按钮颜色 |
size | 30.0 | 控制按钮的大小 |
padding | const EdgeInsets.all(5.0) | 控制按钮与容器的距离 |
控制器(SwiperController)
SwiperController
用于控制 Swiper的index
属性, 停止和开始自动播放. 通过 new SwiperController()
创建一个SwiperController实例,并保存,以便将来能使用。
方法 | 描述 |
---|---|
void move(int index, {bool animation: true}) | 移动到指定下标,设置是否播放动画 |
void next({bool animation: true}) | 下一页 |
void previous({bool animation: true}) | 上一页 |
void startAutoplay() | 开始自动播放 |
void stopAutoplay() | 停止自动播放 |
内建的布局
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QLZW8mVs-1573730731358)(https://github.com/jzoom/images/raw/master/layout1.gif)]
new Swiper(itemBuilder: (BuildContext context, int index) {return new Image.network("http://via.placeholder.com/288x188",fit: BoxFit.fill,);},itemCount: 10,viewportFraction: 0.8,scale: 0.9,
)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1uVvTCCc-1573730731358)(https://github.com/jzoom/images/raw/master/layout2.gif)]
new Swiper(itemBuilder: (BuildContext context, int index) {return new Image.network("http://via.placeholder.com/288x188",fit: BoxFit.fill,);},itemCount: 10,itemWidth: 300.0,layout: SwiperLayout.STACK,
)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fmLS4Foz-1573730731359)(https://github.com/jzoom/images/raw/master/layout3.gif)]
new Swiper(itemBuilder: (BuildContext context, int index) {return new Image.network("http://via.placeholder.com/288x188",fit: BoxFit.fill,);},itemCount: 10,itemWidth: 300.0,itemHeight: 400.0,layout: SwiperLayout.TINDER,)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZlX2K7gT-1573730731359)(https://github.com/jzoom/images/raw/master/layout4.gif)]
构建你自己的动画十分简单:
new Swiper(layout: SwiperLayout.CUSTOM,customLayoutOption: new CustomLayoutOption(startIndex: -1,stateCount: 3).addRotate([-45.0/180,0.0,45.0/180]).addTranslate([new Offset(-370.0, -40.0),new Offset(0.0, 0.0),new Offset(370.0, -40.0)]),itemWidth: 300.0,itemHeight: 200.0,itemBuilder: (context, index) {return new Container(color: Colors.grey,child: new Center(child: new Text("$index"),),);},itemCount: 10)
CustomLayoutOption
被设计用来描述布局和动画,很简单的可以指定每一个元素的状态.
new CustomLayoutOption(startIndex: -1, /// 开始下标stateCount: 3 /// 下面的数组长度 ).addRotate([ // 每个元素的角度-45.0/180,0.0,45.0/180]).addTranslate([ /// 每个元素的偏移new Offset(-370.0, -40.0),new Offset(0.0, 0.0),new Offset(370.0, -40.0)])
文档
本文实例
flutter 轮播组件 Swiper相关推荐
- 造轮子之图片轮播组件(swiper)
图片轮播是种很常见的场景和功能,一般移动网站首页的轮播 banner,商品详情页的商品图片等位置都会用到此功能 像这种常用的场景功能肯定是有人早就写好插件了的,所以遇到这种场景,一般都遵循以下三步: ...
- 【Flutter】Banner 轮播组件 ( flutter_swiper 插件 | Swiper 组件 )
文章目录 一.flutter_swiper 插件 二.Swiper 组件使用 三.完整代码示例 四.相关资源 一.flutter_swiper 插件 到 https://pub.dev/package ...
- 微信小程序之轮播图swiper组件自定义指示点样式
微信小程序 - swiper组件 定义一个轮播图 swiper 组件: // swiper.wxml <swiper indicator-dots="true">< ...
- 微信小程序10:WXML 组件- 轮播图 swiper
微信小程序10:WXML 组件- 轮播图 swiper 官网地址https://developers.weixin.qq.com/miniprogram/dev/component/swiper.ht ...
- Vue.js-Day06-PM【项目实战(附带 完整项目源码)-day01-pm:轮播组件(使用、安装依赖、具体操作过程)、favicon详细制作】
Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 实战项目源码[链接:https://pan.baidu.com/s/1r0Mje3Xnh8x4F1HyG4aQTA 提 ...
- 基于移动端Reactive Native轮播组件的应用与开发详解
总结下这段时间学习reactive native的一些东西,我们来认识一下,被炒得这么火的rn,究竟是个什么东西,以及如何去搭建自己的demo. reactive native是什么 由facebo ...
- uniapp轮播组件之自动轮播
文章目录[隐藏] 前言 实现代码 最终效果(可惜只有静态图) 前言 这两天实践了下 Uniapp 的轮播组件,官方提供了两种轮播组件: 一种是基础轮播组件:另一种是一个复杂的轮播组件. 但是在引用复杂 ...
- 推荐一款带暂停功能的轮播组件,不要谢我,我叫红领巾!
阅读目录 一.效果展示 1.先跟大家见个面,打个招呼 2.什么?切换太慢了?好,加快速度! 3.加入其他功能 4.图片太小,看不出效果?好,那来个大图感受下! 5.如果你不想要右上角的小图标,照样可以 ...
- dw按钮图片滚动js_轮播图--swiper插件/原生js/jQuery
1.swiper插件: 需要下载该插件到本地,并用link标签引用其swiper-bundle.min.css文件,用script引用其swiper-bundle.min.js文件,下载地址及官方文档 ...
- Angular2组件与指令的小实践——实现一个图片轮播组件
如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图. 而除了直接看的见的躯体之外,一个完整的" ...
最新文章
- 【亲测有效】如何在win10上激活Burp Suite,如何注册激活Burp Suite,破解Burp Suite的详细步骤
- 对于随机变量的标准差standard deviation、样本标准差sample standard deviation、标准误差standard error的解释...
- 细聊 Cocoapods 与 Xcode 工程配置
- MS 的SPACE很不好的说
- KlayGE 4.0中Deferred Rendering的改进(四):GI的神话
- windows安装nvm
- CCNA-第七篇-思科私有路由协议-EIGRP-初级
- chrome介绍与用法
- fedora16设置root登录
- 力扣 342.4的幂
- linux关闭端口进程命令,windows Linux 下命令行查看端口占用情况并且关闭进程
- testmarkdown
- linux vi命令的查询,linux vi命令模式详解
- 网站备案各个管局的审核时间多久?
- 【最优化】梯度投影法的几何意义
- 30套最实用JAVA学习视频教程合集
- 平头哥玄铁CPU调试系统介绍
- JAVA课程设计——彩票抽奖购买系统
- 如何基于Miniconda使用Pycharm调用Gurobi
- 【云原生】Docker仓库详细讲解,搭建使用 Docker Registry 私服
热门文章
- MYSQL5.7多线程复制原理
- 营业执照如何完整的转为Word格式?
- 二项式定理学习笔记(详解)
- Android 使用so库的遇到的坑
- R16之Access to Unlicensed Spectrum(3)
- npm i 和 npm i -S有什么区别吗?
- 用Java做一个判断闰年和平年代码
- 客户服务管理(CSM)
- L1-023 输出GPLT (20分) 给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分
- (转)罗振宇跨年演讲:哪来直接登顶的人生,只有不断迭代的历程