Flutter 组件轮播图 flutter_swiper

每日学一点

 

直接上代码

使用了

  dio: ^2.0.14
  json_serializable: ^1.3.0
  http: ^0.12.0
  flutter_swiper: ^1.1.5
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter_a1/Util/HttpController.dart';
import 'package:flutter_swiper/flutter_swiper.dart';

// http://www.mocky.io/v2/5b7143ae3200001402f36c46

class Sanimgs extends StatefulWidget {
  @override
  _SanimgsState createState() => _SanimgsState();
}

class _SanimgsState extends State<Sanimgs> {
  var _items = [];

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: buildAppBar(context),
      body: Container(
          width: MediaQuery.of(context).size.width,
          height: 200.0,
          child: layout2_gogo()),
    );
  }

  @override
  void initState() {
    super.initState();
    getData();
  }

  //获取网络数据.先使用这个测试.
  void getData() {
    HttpController.get("http://www.mocky.io/v2/5b7143ae3200001402f36c46",
        (data) {
      debugPrint("查看数据是什么问题" + data.toString());
      if (data != null) {
        final body = json.decode(data.toString());
        final feeds = body["data"]['pics'];
        var items = [];

        debugPrint("增加feeds:::::" + feeds.toString());
        debugPrint("增加feeds::1:::" + feeds[0]);
        debugPrint("增加feeds::2:::" + feeds[1]);
        debugPrint("增加feeds::3:::" + feeds[2]);

        feeds.forEach((item) {
          debugPrint("增加一个" + item.toString());
          items.add(ImagesModel(item));
        });
        setState(() {
          //dataStr = data.toString();

          _items = items;
        });
      }
    }, params: null);
  }

//这里定义的头部
  Widget buildAppBar(BuildContext context) {
    return new AppBar(title: const Text('历史今日'));
  }

  //这里是加载图片的方法.
  Widget _swiperBuilder(BuildContext context, int index) {
    ImagesModel im = this._items[index];
    debugPrint(im.pic);
    return (Image.network(
      im.pic,
      fit: BoxFit.fill,
    ));
  }

  Widget layout2_gogo() {
    Widget childWidget;
    //判断是网络上的图片是不是已加载.没有下载 放提示.要不出异常错误.()
    if (_items.length == 0) {
      childWidget = new Stack(
        children: <Widget>[
          new Padding(
            padding: new EdgeInsets.fromLTRB(0.0, 35.0, 0.0, 0.0),
            child: new Center(
              child: new Text('正在加载中,莫着急哦~'),
            ),
          ),
        ],
      );
    } else {
      //加载图片完成.可以显示
      childWidget = new Swiper(
        itemBuilder: _swiperBuilder,
        itemCount: _items.length,
        pagination: new SwiperPagination(
            builder: DotSwiperPaginationBuilder(
          color: Colors.black54,
          activeColor: Colors.white,
        )),
        control: new SwiperControl(),
        scrollDirection: Axis.horizontal,
        autoplay: true,
        onTap: (index) => debugPrint("增加feeds点击了第$index个"),
      );
    }
    return childWidget;
  }
}

//定义了数据的类型
class ImagesModel {
  String pic;

  ImagesModel(this.pic);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值