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,SwiperPluginSwiper 提供额外的界面.设置为new SwiperPagination() 展示默认分页.

参数 默认值 描述
alignment Alignment.bottomCenter 如果要将分页指示器放到其他位置,那么可以修改这个参数
margin const EdgeInsets.all(10.0) 分页指示器与容器边框的距离
builder SwiperPagination.dots 目前已经定义了两个默认的分页指示器样式: SwiperPagination.dotsSwiperPagination.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相关推荐

  1. 造轮子之图片轮播组件(swiper)

    图片轮播是种很常见的场景和功能,一般移动网站首页的轮播 banner,商品详情页的商品图片等位置都会用到此功能 像这种常用的场景功能肯定是有人早就写好插件了的,所以遇到这种场景,一般都遵循以下三步: ...

  2. 【Flutter】Banner 轮播组件 ( flutter_swiper 插件 | Swiper 组件 )

    文章目录 一.flutter_swiper 插件 二.Swiper 组件使用 三.完整代码示例 四.相关资源 一.flutter_swiper 插件 到 https://pub.dev/package ...

  3. 微信小程序之轮播图swiper组件自定义指示点样式

    微信小程序 - swiper组件 定义一个轮播图 swiper 组件: // swiper.wxml <swiper indicator-dots="true">< ...

  4. 微信小程序10:WXML 组件- 轮播图 swiper

    微信小程序10:WXML 组件- 轮播图 swiper 官网地址https://developers.weixin.qq.com/miniprogram/dev/component/swiper.ht ...

  5. Vue.js-Day06-PM【项目实战(附带 完整项目源码)-day01-pm:轮播组件(使用、安装依赖、具体操作过程)、favicon详细制作】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 实战项目源码[链接:https://pan.baidu.com/s/1r0Mje3Xnh8x4F1HyG4aQTA   提 ...

  6. 基于移动端Reactive Native轮播组件的应用与开发详解

    总结下这段时间学习reactive native的一些东西,我们来认识一下,被炒得这么火的rn,究竟是个什么东西,以及如何去搭建自己的demo. reactive  native是什么 由facebo ...

  7. uniapp轮播组件之自动轮播

    文章目录[隐藏] 前言 实现代码 最终效果(可惜只有静态图) 前言 这两天实践了下 Uniapp 的轮播组件,官方提供了两种轮播组件: 一种是基础轮播组件:另一种是一个复杂的轮播组件. 但是在引用复杂 ...

  8. 推荐一款带暂停功能的轮播组件,不要谢我,我叫红领巾!

    阅读目录 一.效果展示 1.先跟大家见个面,打个招呼 2.什么?切换太慢了?好,加快速度! 3.加入其他功能 4.图片太小,看不出效果?好,那来个大图感受下! 5.如果你不想要右上角的小图标,照样可以 ...

  9. dw按钮图片滚动js_轮播图--swiper插件/原生js/jQuery

    1.swiper插件: 需要下载该插件到本地,并用link标签引用其swiper-bundle.min.css文件,用script引用其swiper-bundle.min.js文件,下载地址及官方文档 ...

  10. Angular2组件与指令的小实践——实现一个图片轮播组件

    如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图. 而除了直接看的见的躯体之外,一个完整的" ...

最新文章

  1. 【亲测有效】如何在win10上激活Burp Suite,如何注册激活Burp Suite,破解Burp Suite的详细步骤
  2. 对于随机变量的标准差standard deviation、样本标准差sample standard deviation、标准误差standard error的解释...
  3. 细聊 Cocoapods 与 Xcode 工程配置
  4. MS 的SPACE很不好的说
  5. KlayGE 4.0中Deferred Rendering的改进(四):GI的神话
  6. windows安装nvm
  7. CCNA-第七篇-思科私有路由协议-EIGRP-初级
  8. chrome介绍与用法
  9. fedora16设置root登录
  10. 力扣 342.4的幂
  11. linux关闭端口进程命令,windows Linux 下命令行查看端口占用情况并且关闭进程
  12. testmarkdown
  13. linux vi命令的查询,linux vi命令模式详解
  14. 网站备案各个管局的审核时间多久?
  15. 【最优化】梯度投影法的几何意义
  16. 30套最实用JAVA学习视频教程合集
  17. 平头哥玄铁CPU调试系统介绍
  18. JAVA课程设计——彩票抽奖购买系统
  19. 如何基于Miniconda使用Pycharm调用Gurobi
  20. 【云原生】Docker仓库详细讲解,搭建使用 Docker Registry 私服

热门文章

  1. MYSQL5.7多线程复制原理
  2. 营业执照如何完整的转为Word格式?
  3. 二项式定理学习笔记(详解)
  4. Android 使用so库的遇到的坑
  5. R16之Access to Unlicensed Spectrum(3)
  6. npm i 和 npm i -S有什么区别吗?
  7. 用Java做一个判断闰年和平年代码
  8. 客户服务管理(CSM)
  9. L1-023 输出GPLT (20分) 给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分
  10. (转)罗振宇跨年演讲:哪来直接登顶的人生,只有不断迭代的历程