7、Flutter banner_view 轮播图的使用_niceyoo的博客-程序员秘密

7、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,
        );
      },
    );
  }
}

 

posted @ 2019-01-26 15:58 niceyoo 阅读( ...) 评论( ...) 编辑 收藏
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/niceyoo/article/details/89346788

智能推荐

LightGBM(LGB)_中北编程底线(目前大三)的博客-程序员秘密

转载自littlemichelleLightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架,支持高效率的并行训练,并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。背景常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制。而GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地

keil代码自动排版_keil自动排版_无殇奥法的博客-程序员秘密

参考链接:https://blog.csdn.net/feit2417/article/details/80890132参考链接:http://www.cqutlab.cn/thread-124-1-1.html一直在用Keil做STM32的开发,自己写的代码格式上开还不错,但是接手别人的代码就是参差不齐,看起来很费劲,恰巧有人推荐了一个自动排版的功能,也参照了其他人的说明,效果还不...

Python-基础-异常(二十八)_weixin_37571268的博客-程序员秘密

1. 模块1.1 模块的概念模块是 Python 程序架构的一个核心概念每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块模块名 同样也是一个 标识符, 需要符合标识符的命名规则在模块中定义的 全局变量, 函数, 类 都是提供给外界直接使用的 工具模块 就好比是 工具包, 想要使用这个工具包中的工具, 就需要先 导入 这个模块1.2 模块的两种导入...

ORA-01536: 超出表空间'表空间名'的空间限量_cui0313的博客-程序员秘密

运行一个INSERT语句时,竟然报错说超出表空间的空间限量相同的语句放在另外一台数据库去运行是好的丫,再查了查,不出错的这个用户有DBA权限:) , 有错的没有DBA权限,那应该与权限有关了。再查了查表空间,发现有200...

IntelliJ IDEA初始设置_VVanity的博客-程序员秘密

本文总结了一些idea基础的设置,希望能帮助到大家快捷键的配置我用的是Mac OS X 的。有些eclipse转过来的同学可能不习惯。可以自行配置eclipse。不过,我觉得要锻炼我们的适应能力。代码提示我只修改了一个地方。就是代码提示这里。Basic就是代码提示,修改成了option+/。这个只是自己方便而且。类似于eclipse一样。代码提示,不区分大小写。有些版本不一样。我这里取消Match case勾选我看别人的版本是Case sensitive completion:选择Non

COTEX-M内核中断控制_Hao_Zhen的博客-程序员秘密

Cotex-M3 和 M4的 NVIC 最多支持 240个 IRQ(中断请求)、1一个不可屏蔽中断(NMI)、1个Systick(滴答定时器)中断和多个系统异常ST使用16个优先级STM32关于中断的寄存器在NVIC 和 SCB中typedef struct{ __IOM uint32_t ISER[8U]; /*!&amp;amp;amp;amp;amp;amp;amp;lt; Offset: 0x000 (R...

随便推点

echarts固定柱子宽度(barWidth)_dhptkq9465的博客-程序员秘密

series: [ { name: '', yAxisIndex: 0, type: 'bar', barWidth: 15,//固定柱子宽度 data: Ydata }, ...

springboot全局配置Jackson未生效_jacksonconfig 不生效_cs4380的博客-程序员秘密

springboot全局配置Jackson未生效1.application.yml配置项spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 default-property-inclusion: non_null2.原因分析SpringMVC官网说明引用官网说明Finally...

WPF 如何自定义一个弹框_Qgee2013的博客-程序员秘密

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------简述:  手工以原生Grid的方式,自定义了一个仿弹窗效果,优点可以自定义,缺点需要自己实现以及维护整个弹窗的效果效果图:  思路:  直接画好页面,控制它的展示消失即可代码:  1.xaml的弹框,下面的按钮是自定义的样式&lt;!--确认x...

docker环境下MySQL备份恢复实战_iozzzzz的博客-程序员秘密

实验环境:操作系统:Linux version 3.10.0-1127.el7.x86_64应用版本Docker version 20.10.7, build f0df350镜像举例:mysql:5.7注意:必须要先安装Docker容器,参考: https://www.linuxprobe.com/ubuntu-install-docker-ceDocker打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化,Docker是跨平台的容器引擎,支持

Python的XML-RPC学习_weixin_34179762的博客-程序员秘密

编写客户端提交数据到服务器处理是程序员最常碰到的几个问题之一。各种不同的语言对此都有相应的解决方案。比如Unix下,C程序员们可以用SUNRPC,Java程序员则使用RMI来处理。大多数语言还都可以使用Web Service或者ICE。它们的使用方法类似,编写一个接口定义文件,用一个工具处理并生成代码,加入到工程中,最后编译生成目标文件运行。有用过这类工具的朋友们,脑子里应...

推荐文章

热门文章

相关标签