Flutter Swiper制作轮播效果

1、引入flutter_swiper插件

flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配.

Flutter_swiper的GitHub地址:https://github.com/best-flutter/flutter\_swiper

了解flutter_swiper后,需要作的第一件事就再pubspec.yaml文件中引入这个插件(记得使用最新版)

flutter_swiper: ^1.1.6

引入后点击Get Packages下载,或者直接保存,会自动为我们下载包。

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,都可以做进一步的自定义.

简单的定义:

1pagination: new SwiperPagination( 2 builder: DotSwiperPaginationBuilder( 3 color: Colors.black54, 4 activeColor: Colors.white, 5 ))

自定义分页组件:

1new Swiper( 2 ..., 3 pagination:new SwiperCustomPagination( 4 builder:(BuildContext context, SwiperPluginConfig config){ 5 return new YourOwnPaginatipon(); 6 } 7 ) 8);

示例代码如下:

1import 'package:flutter/material.dart'; 2import 'package:flutter_swiper/flutter_swiper.dart'; 3 4class HomePage extends StatefulWidget { 5 @override 6 HomePageState createState() { 7 return HomePageState(); 8 } 9} 10 11class HomePageState extends State<HomePage> { 12 @override 13 Widget build(BuildContext context) { 14 return Scaffold( 15 appBar: AppBar( 16 title: Text('轮播组件'), 17 ), 18 body: Container( 19 width: MediaQuery.of(context).size.width, 20 height: 200.0, 21 child: Swiper( 22 itemBuilder: _swiperBuilder, 23 itemCount: 3, 24 pagination: new SwiperPagination( 25 builder: DotSwiperPaginationBuilder( 26 color: Colors.black54, 27 activeColor: Colors.white, 28 )), 29 control: new SwiperControl(), 30 scrollDirection: Axis.horizontal, 31 autoplay: true, 32 onTap: (index) => print('点击了第$index个'), 33 )), 34 ); 35 } 36 37 Widget _swiperBuilder(BuildContext context, int index) { 38 return (Image.network( 39 "http://via.placeholder.com/350x150", 40 fit: BoxFit.fill, 41 )); 42 } 43}

 内建的布局

1new Swiper( 2 itemBuilder: (BuildContext context, int index) { 3 return new Image.network( 4 "http://via.placeholder.com/288x188", 5 fit: BoxFit.fill, 6 ); 7 }, 8 itemCount: 10, 9 viewportFraction: 0.8, 10 scale: 0.9, 11)

1new Swiper( 2 itemBuilder: (BuildContext context, int index) { 3 return new Image.network( 4 "http://via.placeholder.com/288x188", 5 fit: BoxFit.fill, 6 ); 7 }, 8 itemCount: 10, 9 itemWidth: 300.0, 10 layout: SwiperLayout.STACK, 11)

1new Swiper( 2 layout: SwiperLayout.CUSTOM, 3 customLayoutOption: new CustomLayoutOption( 4 startIndex: -1, 5 stateCount: 3 6 ).addRotate([ 7 -45.0/180, 8 0.0, 9 45.0/180 10 ]).addTranslate([ 11 new Offset(-370.0, -40.0), 12 new Offset(0.0, 0.0), 13 new Offset(370.0, -40.0) 14 ]), 15 itemWidth: 300.0, 16 itemHeight: 200.0, 17 itemBuilder: (context, index) { 18 return new Container( 19 color: Colors.grey, 20 child: new Center( 21 child: new Text("$index"), 22 ), 23 ); 24 }, 25 itemCount: 10 26)

CustomLayoutOption 被设计用来描述布局和动画,很简单的可以指定每一个元素的状态.

1new CustomLayoutOption( 2 startIndex: -1, /// 开始下标 3 stateCount: 3 /// 下面的数组长度 4 ).addRotate([ // 每个元素的角度 5 -45.0/180, 6 0.0, 7 45.0/180 8 ]).addTranslate([ /// 每个元素的偏移 9 new Offset(-370.0, -40.0), 10 new Offset(0.0, 0.0), 11 new Offset(370.0, -40.0) 12 ])
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0