Flutter banner_view 轮播图的使用及实现代码

1、前言

实现轮播图,效果如下:

2、实现

将采用 banner_view 实现:资源库地址

2.1、yaml 引入依赖

在 pubspec.yaml 声明需要引用的库,执行命令 flutter packages get 进行拉取即可使用。

banner_view: "^1.1.2"

2.2、代码中引入依赖

在资源库地址下方,作者提供了 banner_view 的几种展示方式。

import 'package:flutter/material.dart';
import 'package:banner_view/banner_view.dart';
import 'Pair.dart';
import 'factory/BannerItemFactory.dart';
class BannerViewPage extends StatefulWidget {
 @override
 _BannerViewPageState createState() => new _BannerViewPageState();
}
class _BannerViewPageState extends State<BannerViewPage> {
 @override
 Widget build(BuildContext context) {
  return new Scaffold(
   body:
     new Container(
      child: new Column(
       children: <Widget>[
        new Container(
         alignment: Alignment.center,
         height: 200.0,
         child: this._bannerView0(),
         padding: EdgeInsets.only(bottom: 10.0),
        )
       ],
      ),
     ),
   );
 }
 /**
  * 第一种方式
  */
 BannerView _bannerView0() {
  // 盛放图片的 List
  List<Pair<String, Color>> param = [
   Pair.create('https://p5.ssl.qhimg.com/dm/456_209_/t01f43c5849ef5f521a.jpg', Colors.red[500]),
   Pair.create('https://p.ssl.qhimg.com/t0171bb61911ebe8899.jpg', Colors.green[500]),
   Pair.create('https://p.ssl.qhimg.com/t01ee77978d3a95a3ae.jpg', Colors.blue[500]),
  ];
  return new BannerView(
   BannerItemFactory.banners(param),
  );
//  return new BannerView(
//   BannerItemFactory.banners(param),
//   indicatorMargin: 10.0,
//   indicatorNormal: new Container(
//    width: 5.0,
//    height: 5.0,
//    decoration: new BoxDecoration(
//     color: Colors.green,
//     shape: BoxShape.rectangle,
//    ),
//   ),
//   indicatorSelected: new Container(
//    width: 15.0,
//    height: 5.0,
//    decoration: new BoxDecoration(
//     color: Colors.black,
//     shape: BoxShape.rectangle,
//     borderRadius: new BorderRadius.all(
//      new Radius.circular(5.0),
//     ),
//    ),
//   ),
//   indicatorBuilder: (context, indicator) {
//    Widget cc = new Container(
//     padding: new EdgeInsets.symmetric(horizontal: 20.0,),
//     height: 44.0,
//     width: double.infinity,
//     color: Colors.grey[300],
//     child: indicator,
//    );
//    return new Opacity(
//     opacity: 0.5,
//     child: cc,
//    );
//   },
//  );
 }
 /**
  * 第二种方式
  */
 BannerView _bannerView() {
  var pre = 'https://raw.githubusercontent.com/yangxiaoweihn/Assets/master';
  List<Pair<String, Color>> param = [
   Pair.create('https://raw.githubusercontent.com/yangxiaoweihn/Assets/master/cars/car_0.jpg', Colors.red[100]),
   Pair.create('https://raw.githubusercontent.com/yangxiaoweihn/Assets/master/cartoons/ct_0.jpg', Colors.green[100]),
   Pair.create('https://raw.githubusercontent.com/yangxiaoweihn/Assets/master/pets/cat_1.jpg', Colors.blue[100]),
   Pair.create('https://raw.githubusercontent.com/yangxiaoweihn/Assets/master/scenery/s_1.jpg', Colors.yellow[100]),
   Pair.create('https://raw.githubusercontent.com/yangxiaoweihn/Assets/master/cartoons/ct_1.jpg', Colors.red[100]),
//   Pair.create('$pre/cartoons/ct_1.jpg', Colors.red[100]),
  ];
  return new BannerView(
   BannerItemFactory.banners(param),
   indicatorMargin: 10.0,
   indicatorNormal: new Container(
    width: 5.0,
    height: 5.0,
    decoration: new BoxDecoration(
     color: Colors.green,
     shape: BoxShape.rectangle,
    ),
   ),
   indicatorSelected: new Container(
    width: 15.0,
    height: 5.0,
    decoration: new BoxDecoration(
     color: Colors.black,
     shape: BoxShape.rectangle,
     borderRadius: new BorderRadius.all(
      new Radius.circular(5.0),
     ),
    ),
   ),
   indicatorBuilder: (context, indicator) {
    Widget cc = new Container(
     padding: new EdgeInsets.symmetric(horizontal: 20.0,),
     height: 44.0,
     width: double.infinity,
     color: Colors.grey[300],
     child: indicator,
    );
    return new Opacity(
     opacity: 0.5,
     child: cc,
    );
   },
  );
 }
}

总结

以上所述是小编给大家介绍的Flutter banner_view 轮播图的使用及实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Flutter 封装一个 Banner 轮播图效果的实例代码

    实际业务开发中,首页一般都会存在一个轮播图. 在 Flutter 中,如何开发一个轮播? 了解需求 首先,我们在开发一个功能的时候要了解这个功能的需求,那一个轮播需要有什么功能? 1. 可以自定义高度和一些属性 2. 展示图片 3. 自动翻页播放 4. 点击事件 5. 指示器 6. 人为拖动的时候关闭自动播放 其中「人为拖动的时候关闭自动播放」是比较难的,我们后续会说,那先一个一个功能来实现. 自定义高度和一些属性 这里主要是做一些前期的工作,如果我们的 Banner 要开源让别人来使用,那我们

  • flutter实现轮播图效果

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 1 添加依赖库 flutter_swiper: ^1.0.6 2 普通常用 圆点指示器自动轮播图 class SwiperViewDefaultPage extends StatefulWidget { @override State<StatefulWidget> createState() { return new SwiperViewDefaultPageState(); } } class Swipe

  • Flutter banner_view 轮播图的使用及实现代码

    1.前言 实现轮播图,效果如下: 2.实现 将采用 banner_view 实现:资源库地址 2.1.yaml 引入依赖 在 pubspec.yaml 声明需要引用的库,执行命令 flutter packages get 进行拉取即可使用. banner_view: "^1.1.2" 2.2.代码中引入依赖 在资源库地址下方,作者提供了 banner_view 的几种展示方式. import 'package:flutter/material.dart'; import 'packag

  • vue自定义js图片碎片轮播图切换效果的实现代码

    定义一个banner.js文件,代码如下 ;window.requestAnimationFrame = window.requestAnimationFrame||function(a){return setTimeout(a,1000/60)}; window.cancelAnimationFrame = window.cancelAnimationFrame||clearTimeout; var FragmentBanner = function(option) { //实例化时,可传的参

  • jquery 实现轮播图详解及实例代码

    轮播图: 接触jquery也有一段时间了,今天刚好利用轮播图来练练手.博文的前面会介绍一个简单用jquery做轮播图的例子,中间会插入一些关于轮播图更多的思考,在后面会用Javascript的方法来写一个轮播图,最后则是关于jquery和Javascript的比较.轮播图的效果可以点击如下链接查看:http://sandbox.runjs.cn/show/t07kscph jquery做轮播图的例子: html部分代码: <!DOCTYPE html> <html> <hea

  • vue轮播图插件vue-awesome-swiper的使用代码实例

    最近写vue2.0项目中用到了轮播图的一个插件,也就是vue-awesome-swiper,个人感觉还是比较强大的,swiper官网中的API及配置均可使用(支持3.0),以下说下使用该插件的一些步骤: 第一步安装 npm install vue-awesome-swiper --save 第二部在main.js中引入 import Vue from 'vue' import VueAwesomeSwiper from 'vue-awesome-swiper' Vue.use(VueAwesom

  • jquery  实现轮播图详解及实例代码

    轮播图: 接触jquery也有一段时间了,今天刚好利用轮播图来练练手.博文的前面会介绍一个简单用jquery做轮播图的例子,中间会插入一些关于轮播图更多的思考,在后面会用Javascript的方法来写一个轮播图,最后则是关于jquery和Javascript的比较.轮播图的效果可以点击如下链接查看:http://sandbox.runjs.cn/show/t07kscph jquery做轮播图的例子: html部分代码: <!DOCTYPE html> <html> <hea

  • js轮播图的插件化封装详解

    本文实例为大家分享了js轮播图的插件化封装代码,供大家参考,具体内容如下 具体代码如下: ~function(){ function AutoBanner(curEleId,ajaxURL,interval){ //把之前存储获取元素的变量都作为当前实例的私有属性 this.banner = document.getElementById(curEleId); this.bannerInner = utils.firstChild(this.banner); this.bannerTip = u

  • JavaScript实现带有子菜单和控件的slider轮播图效果

    大家或许做过(照片轮播)无限滚动图片的项目,但是,如果使用普通的滚动,当到达最后一张时,便会滚动回第一张,这是一个非常不好的用户体验.下面通过本文给大家分享基于JavaScript实现带有子菜单和控件的slider轮播图效果,具体实现代码如下所示: 实现效果: 实现原理: // 步骤 // 1. 获取事件源以及相关元素 // 2. 复制第一张图片所在的li,添加到ul的最后面 // 3. 给ol添加li,ul中的个数-1个,并点亮第一个按钮 // 4. 鼠标放到ol的li上切换图片 // 5.

  • 简单实现js轮播图效果

    本文实例为大家分享了js实现轮播图效果展示的具体代码,供大家参考,具体内容如下 html结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin:0; padding:0; font-size:14px; -webkit-use

  • Bootstrap实现基于carousel.js框架的轮播图效果

    本文实例为大家分享了Bootstrap轮播图效果展示的具体代码,供大家参考,具体内容如下 声明式触发需要使用到的几个data-*属性 1.data-ride:作用在最外层容器上,固定值:carousel 2.data-target:作用在class=carousel-indicators的每个子元素li上面,标注对那个元素进行点击轮播 3.data-slide:作用在前翻页和后翻页的两个a链接上,prev表示前翻页,next表示后翻页 4.data-slide-to:作用在class=carou

随机推荐