1、引入flutter_swiper插件

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

好牛X得介绍,一般敢用“最”的一般都是神级大神,看到这个介绍后我也是吃了碗贾玲代言的方便面(一桶半),压了压我激动的心情。

Flutter_swiper的GitHub地址:https://github.com/best-flutter/flutter_swiper

了解flutter_swiper后,需要作的第一件事就再pubspec.yaml文件中引入这个插件(录课时flutter_swiper插件的版本文v1.1.6,以后可能会有更新)。

flutter_swiper : ^1.1.6  (记得使用最新版)

引入后在右上角点击 Package get,会自动为我们下载包。

2、首页轮播效果的编写

我们新定义一个类,当然你甚至可以新起一个文件,完全独立出来。这样一个页面就可以分为多个类,然后写完后由项目组长统一整合起来。

当然作练习就没必要每一个模块都分一个dart文件了,要不太乱,自己反而降低编写效率。所以就写在同一个目录里了。

首先引入flutter_swiper插件,然后就可以编写自定义轮播类了。

新写了一个SwiperDiy的类,当然这个类用静态类就完全可以了,这个类是需要接受一个List参数的,所以我们定义了一个常量swiperDataList,然后返回一个组件,这个组件其实就是Swiper组件,不过我们在Swiper组件外边包裹了一个Container。

代码如下:

首页轮播组件编写class SwiperDiy extends StatelessWidget {  final List swiperDataList;  SwiperDiy({Key key,this.swiperDataList}):super(key:key);

  @override  Widget build(BuildContext context) {    return Container(      height: 333.0,      child: Swiper(        itemBuilder: (BuildContext context,int index){          return Image.network("${swiperDataList[index]['image']}",fit:BoxFit.fill);        },        itemCount: swiperDataList.length,        pagination: new SwiperPagination(),        autoplay: true,      ),    );  }}

3、FutureBuilder Widget

这是一个Flutter内置的组件,是用来等待异步请求的。现在可以使用FuturerBuilder来改造HomePage类里的build方法,具体代码细节在视频中进行讲解。

代码如下:

@override  Widget build(BuildContext context) {

    return Scaffold(      appBar: AppBar(title: Text('百姓生活+'),),      body:FutureBuilder(        future:getHomePageContent(),        builder: (context,snapshot){          if(snapshot.hasData){             var data=json.decode(snapshot.data.toString());             List<Map> swiperDataList = (data['data']['slides'] as List).cast(); // 顶部轮播组件数             return Column(               children: <Widget>[                   SwiperDiy(swiperDataList:swiperDataList ),   //页面顶部轮播组件               ],             );          }else{            return Center(              child: Text('加载中'),            );          }        },      )    );

  }

有了这个方法,我们就没必要再用initState了,删除了就可以了。全体代码如下:

import 'dart:convert';

import 'package:flutter/material.dart';import '../service/service_method.dart';import 'package:flutter_swiper/flutter_swiper.dart';

class HomePage extends StatefulWidget {  _HomePageState createState() => _HomePageState();

}

class _HomePageState extends State<HomePage> {

  String homePageContent='正在获取数据';

  @override  Widget build(BuildContext context) {    return Scaffold(        appBar: AppBar(          title: Text('百姓生活+'),        ),        body:FutureBuilder(            future: getHomePageContent(),            builder: (context,snapshot){              if(snapshot.hasData){                var data = json.decode(snapshot.data.toString());                List<Map> swiper = (data['data']['slides'] as List).cast();                return Column(                  children: <Widget>[                    SwiperDiy(swiperDataList: swiper,)                  ],                );              }else{                  return Center(                    child: Text("加载中"),                  );              }            },        )    );  }}

轮播组件class SwiperDiy extends StatelessWidget {

  final List swiperDataList;

  SwiperDiy({Key key,this.swiperDataList}):super(key:key);

  @override  Widget build(BuildContext context) {    return Container(      height: 333.0,      child: Swiper(          itemCount: swiperDataList.length,          itemBuilder: (BuildContext context,int index){              return Image.network("${swiperDataList[index]['image']}",fit:BoxFit.fill);          },          pagination: SwiperPagination(),          autoplay: true,      ),    );  }}

效果如下图所示:

4、课程总结:

  • flutter_Swiper:学习了flutter_swiper组件的简单使用方法,当然你还可以自己学习。
  • FutureBuilder: 这个布局可以很好的解决异步渲染的问,实战中我们讲了很多使用的技巧,注意反复学习。
  • 自定义类接受参数:我们复习了类接受参数的方法。学会了这个技巧就可以把我们的页面分成很多份,让很多人来进行编写,最后再整合到一起。

转载于:https://www.cnblogs.com/niceyoo/p/11029170.html

10-Flutter移动电商实战-使用FlutterSwiper制作轮播效果相关推荐

  1. Flutter移动电商实战 --(14)首页_拨打电话操作

    拨打电话的功能在app里也很常见,比如一般的外卖app都会有这个才做.其实Flutter本身是没给我们提供拨打电话的能力的,那我们如何来拨打电话那? 1.编写店长电话模块 这个小伙伴们一定轻车熟路了, ...

  2. Flutter Swiper制作轮播效果

    1.引入flutter_swiper插件 flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配. Flutter_swiper的GitHub地址:https: ...

  3. 01-Flutter移动电商实战-项目学习记录

    01-Flutter移动电商实战-项目学习记录 一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常 ...

  4. 12-Flutter移动电商实战-首页导航区域编写

    12-Flutter移动电商实战-首页导航区域编写 1.导航单元素的编写 从外部看,导航是一个GridView部件,但是每一个导航又是一个上下关系的Column.小伙伴们都知道Flutter有多层嵌套 ...

  5. 08-Flutter移动电商实战-dio基础_伪造请求头获取数据

    08-Flutter移动电商实战-dio基础_伪造请求头获取数据 在很多时候,后端为了安全都会有一些请求头的限制,只有请求头对了,才能正确返回数据.这虽然限制了一些人恶意请求数据,但是对于我们聪明的程 ...

  6. 06-Flutter移动电商实战-dio基础_Get_Post请求和动态组件协作

    06-Flutter移动电商实战-dio基础_Get_Post请求和动态组件协作 上篇文章中,我们只看到了 dio 的使用方式,但并未跟应用关联起来,所以这一篇将 dio 网络请求与应用界面结合起来, ...

  7. 微信小程序电商实战-商品列表流式布局

    微信小程序电商实战-商品列表流式布局 流式布局概念 流式布局也叫百分比布局 把元素的宽,高,margin,padding不再用固定数值,改用百分比, 这样元素的宽,高,margin,padding会根 ...

  8. 11-Flutter移动电商实战-首页_屏幕适配方案和制作

    11-Flutter移动电商实战-首页_屏幕适配方案和制作 1.flutter_ScreenUtil插件简介 flutter_ScreenUtil屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理 ...

  9. 09-Flutter移动电商实战-移动商城数据请求实战

    09-Flutter移动电商实战-移动商城数据请求实战 1.URL接口管理文件建立 第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口.当然工作中的U ...

最新文章

  1. python项目之网络聊天室_Python实现多人聊天室
  2. 使用Asible连接被控端SHH拒绝解决办法
  3. 离散余弦变换和C语言实现-win32版本
  4. 产品经理网站数据分析之测量问题现状(二)
  5. Code Blocks 10 05的安装及使用
  6. iTunes 错误 -50
  7. Bootstrap3 排版之水平对齐
  8. python创建类和类方法
  9. tbopen链接生成工具_筛选了100个配色工具后,我挑出了这25个
  10. [转载] 快速入门(完整):Python实例100个(基于最新Python3.7版本)
  11. json和ajax使用
  12. 如何编写一个Makefile文件(手把手的教你)
  13. 计算机网络技术基础第二章答案,计算机网络技术基础各章节综合练习题及答案...
  14. 最全公司章程自由规定事项
  15. nginx php-fpm 根目录,缓存 – Nginx和/或php5-fpm会记住符号链接的根目录
  16. 简易歌曲推荐网页制作
  17. 【基站位置查询】通过lac,cellid进行手机基站位置查询和经纬度查询
  18. 新浪微博情感分析--含爬虫及数据分析
  19. (c#)小游戏 飞行棋
  20. sql服务器支持版本,支持的版本和版本升级 (SQL Server 2017)

热门文章

  1. UA MATH571B 试验设计 2k析因设计理论上
  2. Mathematica 画图操作中的一些小惊喜
  3. Linux内核常见FAQ
  4. 图解观察托管程序线程
  5. 图解VC++版PE文件解析器源码分析
  6. VC++生成序列号和注册机总结
  7. Java 学习笔记 反射与迭代器
  8. 7、Java并发性和多线程-如何创建并运行线程
  9. CreateThread 和_beginthreadex区别
  10. 《C与指针》第七章练习