首页 > 其他分享 >Flutter中使用flutter_swiper实现轮播图

Flutter中使用flutter_swiper实现轮播图

时间:2022-09-28 13:56:06浏览次数:75  
标签:www 轮播 url Flutter itying images new flutter

1. 安装插件

配置flutter_swiper插件

  # 配置轮播图插件
  flutter_swiper: ^1.1.6

pubspec.yaml中配置保存后,在VS Code环境中会自动下载依赖包。

如果无法正常下载,执行 flutter pub get

2. 引入依赖

在需要用到的该插件文件中引入插件包。

import 'package:flutter_swiper/flutter_swiper.dart';

3. 使用插件

List<Map> imageList = [
    {
        "url":"http://www.itying.com/images/flutter/1.png"
    },
    {
        "url":"http://www.itying.com/images/flutter/2.png"
    },
    {
        "url":"http://www.itying.com/images/flutter/3.png"
    },
    {
        "url":"http://www.itying.com/images/flutter/4.png"
    }
];
 
new Swiper(
    itemBuilder: (BuildContext context,int index){
        // 配置图片地址
        return new Image.network(imageList[index]["url"],fit: BoxFit.fill,);
    },
    // 配置图片数量
    itemCount: imageList.length ,
    // 底部分页器
    pagination: new SwiperPagination(),
    // 左右箭头
    control: new SwiperControl(),
    // 无限循环
    loop: true,
    // 自动轮播
    autoplay: true,
),  

4. 完整示例

import 'package:flutter/material.dart';
 
// 引入轮播图插件
import 'package:flutter_swiper/flutter_swiper.dart';
 
 
class SwiperPage extends StatefulWidget {
    SwiperPage({Key key}) : super(key: key);
    @override
    _SwiperPageState createState() => _SwiperPageState();
}
 
class _SwiperPageState extends State<SwiperPage> {
 
    // 轮播图片
List<Map> imageList = [
    {
        "url":"http://www.itying.com/images/flutter/1.png"
    },
    {
        "url":"http://www.itying.com/images/flutter/2.png"
    },
    {
        "url":"http://www.itying.com/images/flutter/3.png"
    },
    {
        "url":"http://www.itying.com/images/flutter/4.png"
    }
];
    @override
    Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(title: Text("Swiper")),
            body:Column(
                children:<Widget>[
                    Container(
                        width: double.infinity,
                        child: AspectRatio(
                            // 配置宽高比
                            aspectRatio: 16/9,
                            child: new Swiper(
                                itemBuilder: (BuildContext context,int index){
                                    // 配置图片地址
                                    return new Image.network(imageList[index]["url"],fit: BoxFit.fill,);
                                },
                                // 配置图片数量
                                itemCount: imageList.length ,
                                // 底部分页器
                                pagination: new SwiperPagination(),
                                // 左右箭头
                                control: new SwiperControl(),
                                // 无限循环
                                loop: true,
                                // 自动轮播
                                autoplay: true,
                            ),  
                        ),
                    )
                ]
            )
        );
    }
}

效果图如下:
image
实现一个扇形轮播图,代码如下:

import 'package:flutter/material.dart';
 
// 引入轮播图插件
import 'package:flutter_swiper/flutter_swiper.dart';
 
 
class SwiperPage extends StatefulWidget {
    SwiperPage({Key key}) : super(key: key);
    @override
    _SwiperPageState createState() => _SwiperPageState();
}
 
class _SwiperPageState extends State<SwiperPage> {
 
    // 轮播图片
    List<Map> imageList = [
        {
            "url":"http://www.itying.com/images/flutter/1.png"
        },
        {
            "url":"http://www.itying.com/images/flutter/2.png"
        },
        {
            "url":"http://www.itying.com/images/flutter/3.png"
        },
        {
            "url":"http://www.itying.com/images/flutter/4.png"
        }
    ];
    @override
    Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(title: Text("Swiper")),
            body:Column(
                children:<Widget>[
                    Container(
                        child: AspectRatio(
                            aspectRatio: 16 / 9,
                            child: 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(
                                        child: new Center(
                                            // 配置图片地址
                                            child: Image.network(imageList[index]['url'],fit: BoxFit.contain,)
                                        ),
                                    );
                                },
                                // 配置图片数量
                                itemCount: imageList.length
                            ),
                        ),
                    )
                ]
            )
        );
    }
}

效果图如下:
image
image
参考:GitHub - best-flutter/flutter_swiper: The best swiper for flutter , with multiple layouts, infinite loop. Compatible with Android & iOS.

标签:www,轮播,url,Flutter,itying,images,new,flutter
From: https://www.cnblogs.com/sishuiliuyun/p/16737778.html

相关文章

  • google Flutter入门
     flutter口号:BuildappsforanyscreenFluttertransformstheappdevelopmentprocess.Build,test,anddeploybeautifulmobile,web,desktop,andembedded......
  • flutter 图片Image实现圆角的四种方法
    开发中,对图片进行圆角处理,是很常见的需求,下面提供四种方法实现圆角效果,控件倒圆角也可以应用flutter中可以使用Container特性、CircleAvatar的backgroundImage、ClipOv......
  • Flutter之配置gradle
    目录Flutter之配置gradleFlutterVersion添加环境变量修改flutter.gradle修改resolve_dependencies.gradle指定gradle路径Flutter之配置gradleFlutterVersion3.3.2......
  • Flutter发布Release版安装后Crash问题处理
    一、发布Flutterapp命令在flutter项目根目录下打开cmd执行:flutterbuildapk--release命令即可。二、安装后运行crash问题处理在flutter项目根目录下打开cmd执行:flut......
  • vue使用轮播图插件vue-awesome-swiper
    案例,我目前使用的是vue2版本的2.6,安装vue-awesome-swiper是3.1.3版本的   第一步:在项目中使用npminstallvue-awesome-swiper--save 如果要指定我的版本......
  • 我在 Flutter 应用中使用 Bloc 的方式
    我在Flutter应用中使用Bloc的方式Flutter世界中的每个人(几乎)都知道集团状态管理库。但并不是每个人都知道何时(或如何)使用它。我也是。这篇文章只是我对事物的看......
  • flutter系列之:Material中的3D组件Card
    目录简介Card详解Card的使用总结简介除了通用的组件之外,flutter还提供了两种风格的特殊组件,其中在Material风格中,有一个Card组件,可以很方便的绘制出卡片风格的界面,并且还......
  • Flutter小问题及其解决方案
    本文章随缘更新,希望对你有帮助。1.使用InkWell包裹的组件作为ListView的子组件会溢出我们有以下界面ListView.builder(padding:constEdgeInsets.all(16.0),it......
  • SQLite基础语法速用大法(Flutter)
    前记(可跳过这段来自本up的罗里吧嗦。。。)在做上一个项目的时候,需要用到本地数据库,以前做公司项目用的是轻量级数据库Realm,做自己小项目用的是greenDAO,大学学的是SQLserv......
  • 视频直播系统源码,Flutter Hero 实现共享元素转场动画
    视频直播系统源码,FlutterHero实现共享元素转场动画1未使用Hero时的页面切换列表页面 classListPageextendsStatefulWidget{ constListPage({Key?key}):s......