10-Flutter移动电商实战-使用FlutterSwiper制作轮播效果
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制作轮播效果相关推荐
- Flutter移动电商实战 --(14)首页_拨打电话操作
拨打电话的功能在app里也很常见,比如一般的外卖app都会有这个才做.其实Flutter本身是没给我们提供拨打电话的能力的,那我们如何来拨打电话那? 1.编写店长电话模块 这个小伙伴们一定轻车熟路了, ...
- Flutter Swiper制作轮播效果
1.引入flutter_swiper插件 flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配. Flutter_swiper的GitHub地址:https: ...
- 01-Flutter移动电商实战-项目学习记录
01-Flutter移动电商实战-项目学习记录 一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常 ...
- 12-Flutter移动电商实战-首页导航区域编写
12-Flutter移动电商实战-首页导航区域编写 1.导航单元素的编写 从外部看,导航是一个GridView部件,但是每一个导航又是一个上下关系的Column.小伙伴们都知道Flutter有多层嵌套 ...
- 08-Flutter移动电商实战-dio基础_伪造请求头获取数据
08-Flutter移动电商实战-dio基础_伪造请求头获取数据 在很多时候,后端为了安全都会有一些请求头的限制,只有请求头对了,才能正确返回数据.这虽然限制了一些人恶意请求数据,但是对于我们聪明的程 ...
- 06-Flutter移动电商实战-dio基础_Get_Post请求和动态组件协作
06-Flutter移动电商实战-dio基础_Get_Post请求和动态组件协作 上篇文章中,我们只看到了 dio 的使用方式,但并未跟应用关联起来,所以这一篇将 dio 网络请求与应用界面结合起来, ...
- 微信小程序电商实战-商品列表流式布局
微信小程序电商实战-商品列表流式布局 流式布局概念 流式布局也叫百分比布局 把元素的宽,高,margin,padding不再用固定数值,改用百分比, 这样元素的宽,高,margin,padding会根 ...
- 11-Flutter移动电商实战-首页_屏幕适配方案和制作
11-Flutter移动电商实战-首页_屏幕适配方案和制作 1.flutter_ScreenUtil插件简介 flutter_ScreenUtil屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理 ...
- 09-Flutter移动电商实战-移动商城数据请求实战
09-Flutter移动电商实战-移动商城数据请求实战 1.URL接口管理文件建立 第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口.当然工作中的U ...
最新文章
- python项目之网络聊天室_Python实现多人聊天室
- 使用Asible连接被控端SHH拒绝解决办法
- 离散余弦变换和C语言实现-win32版本
- 产品经理网站数据分析之测量问题现状(二)
- Code Blocks 10 05的安装及使用
- iTunes 错误 -50
- Bootstrap3 排版之水平对齐
- python创建类和类方法
- tbopen链接生成工具_筛选了100个配色工具后,我挑出了这25个
- [转载] 快速入门(完整):Python实例100个(基于最新Python3.7版本)
- json和ajax使用
- 如何编写一个Makefile文件(手把手的教你)
- 计算机网络技术基础第二章答案,计算机网络技术基础各章节综合练习题及答案...
- 最全公司章程自由规定事项
- nginx php-fpm 根目录,缓存 – Nginx和/或php5-fpm会记住符号链接的根目录
- 简易歌曲推荐网页制作
- 【基站位置查询】通过lac,cellid进行手机基站位置查询和经纬度查询
- 新浪微博情感分析--含爬虫及数据分析
- (c#)小游戏 飞行棋
- sql服务器支持版本,支持的版本和版本升级 (SQL Server 2017)