flutter中实现轮播图

本文详细介绍了如何在Flutter中使用flutter_swiper库创建强大的轮播效果,包括引入依赖、基本使用方法、参数配置以及分页指示器和控制按钮的设置。通过设置各种参数,可以实现无限轮播、自动播放、自定义分页器和控制按钮等功能,完美适配Android和iOS平台。
摘要由CSDN通过智能技术生成

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

1、在pubspec.yaml引入flutter_swiper

flutter_swiper: ^1.1.6

记得执行

flutter pub get

2、引用

import 'package:flutter_swiper/flutter_swiper.dart';

3、使用

    Swiper(
      itemBuilder: (BuildContext context,int index){
        // 配置图片地址
        return new Image.network(productModel.headImages[index],fit: BoxFit.fill,);
      },
      // 配置图片数量
      itemCount: productModel.headImages.length ,
      // 底部分页器
      pagination: new SwiperPagination(),
      // 左右箭头
      control: new SwiperControl(),
      // 无限循环
      loop: true,
      // 自动轮播
      autoplay: true,
    )

4、效果图
在这里插入图片描述
5、Swiper基本参数

参数默认值描述
scrollDirectionAxis.horizontal滚动方向,如果需要垂直滚动设置为Axis.vertical
looptrue无限轮播模式开关
index0初始的时候下标位置
autoplayfalse自动播放开关
autoplayDely3000自动播放延迟毫秒数
autoplayDiableOnInteractiontrue当用户拖拽的时候,是否停止自动播放
onIndexChangedvoid onIndexChanged(int index)当用户手动拖拽或者自动播放引起下标改变的时候调用
onTapvoid onTap(int index)当用户点击某个轮播的时候调用
duration300.0动画时间,单位是毫秒
paginationnull设置 new SwiperPagination() 展示默认分页指示器
controlnull设置 new SwiperControl() 展示默认分页按钮

6、分页指示器 SwiperPagination 参数

参数默认值描述
alignmentAlignment.bottomCenter如果要将分页指示器放到其他位置,那么可以修改这个参数
marginEdgeInsets.all(10.0)分页指示器与容器边框的距离
builderSwiperPagination.dots两个默认的分页指示器样式: SwiperPagination.dots 、 SwiperPagination.fraction(可自定义)

7、控制按钮 SwiperControl 参数

参数默认值描述
iconPreviousIcons.arrow_back_ios上一页的IconData
iconNextIcons.arrow_forward_ios下一页的IconData
colorTheme.of(context).primaryColor控制按钮颜色
size30.0控制按钮的大小
paddingconst EdgeInsets.all(5.0)控制按钮与容器的距离

控制器(SwiperController)可使用方法

方法描述
void move(int index, {bool animation: true})移动到指定下标,设置是否播放动画
void next({bool animation: true})下一页
void previous({bool animation: true})上一页
void startAutoplay()开始自动播放
void stopAutoplay()停止自动播放
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter,可以使用`PageView`来实现图片轮播切换。以下是一个简单的示例代码: ```dart class ImageCarousel extends StatefulWidget { final List<String> imageUrls; ImageCarousel({required this.imageUrls}); @override _ImageCarouselState createState() => _ImageCarouselState(); } class _ImageCarouselState extends State<ImageCarousel> { final PageController _pageController = PageController(); int _currentPage = 0; @override void initState() { super.initState(); _pageController.addListener(() { setState(() { _currentPage = _pageController.page!.round(); }); }); } @override void dispose() { _pageController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Stack( children: [ PageView( controller: _pageController, children: widget.imageUrls .map((imageUrl) => Image.network( imageUrl, fit: BoxFit.cover, )) .toList(), ), Positioned( bottom: 10, left: 0, right: 0, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: widget.imageUrls.map((imageUrl) { final index = widget.imageUrls.indexOf(imageUrl); return Padding( padding: const EdgeInsets.symmetric(horizontal: 4), child: Container( width: 8, height: 8, decoration: BoxDecoration( shape: BoxShape.circle, color: _currentPage == index ? Colors.white : Colors.grey, ), ), ); }).toList(), ), ), ], ); } } ``` 在这个示例,`ImageCarousel`是一个`StatefulWidget`,它接受一个`imageUrls`参数,该参数是一个包含图片URL的字符串列表。`_ImageCarouselState`使用`PageView`来显示所有图片,同时使用`PageController`来跟踪当前页面。 在`initState`方法,我们添加了一个监听器来更新`_currentPage`变量,这个变量用于显示当前选的页面。在`build`方法,我们使用`Stack`将`PageView`和指示器放在一起。指示器是一个包含多个圆点的`Row`,其的页面对应的圆点是白色的,其余的圆点是灰色的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值