13.首页_广告Banner组件制作

主要是做这个小广告条。

其实就是读取一个图片做一个widget放到这里

使用stlessW快速生成

定义一个变量存放图片的url地址:

这样我们的广告条就写完了

这个组件我们需要准备下数据

预览效果

最终代码

import 'package:flutter/material.dart';
import '../service/service_method.dart';
import 'package:flutter_swiper/flutter_swiper.dart';
import 'dart:convert';
import 'package:flutter_screenutil/flutter_screenutil.dart'; class HomePage extends StatefulWidget {
@override
_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();
List<Map> navigatorList=(data['data']['category'] as List).cast();
String adPicture=data['data']['advertesPicture']['PICTURE_ADDRESS'];
return Column(
children: <Widget>[
SwiperDiy(swiperDateList: swiper),
TopNavigator(navigatorList:navigatorList ,),
AdBanner(adPicture:adPicture)
],
);
}else{
return Center(child: Text('加载中....'));
}
},
),
);
}
}
//首页轮播插件
class SwiperDiy extends StatelessWidget {
final List swiperDateList;
//构造函数
SwiperDiy({this.swiperDateList}); @override
Widget build(BuildContext context) { print('设备的像素密度:${ScreenUtil.pixelRatio}');
print('设备的高:${ScreenUtil.screenWidth}');
print('设备的宽:${ScreenUtil.screenHeight}'); return Container(
height: ScreenUtil().setHeight(),//
width:ScreenUtil().setWidth(),
child: Swiper(
itemBuilder: (BuildContext context,int index){
return Image.network("${swiperDateList[index]['image']}",fit: BoxFit.fill,);
},
itemCount: swiperDateList.length,
pagination: SwiperPagination(),
autoplay: true,
),
);
}
} class TopNavigator extends StatelessWidget {
final List navigatorList; TopNavigator({Key key, this.navigatorList}) : super(key: key); Widget _gridViewItemUI(BuildContext context,item){
return InkWell(
onTap: (){print('点击了导航');},
child: Column(
children: <Widget>[
Image.network(item['image'],width: ScreenUtil().setWidth()),
Text(item['mallCategoryName'])
],
),
);
}
@override
Widget build(BuildContext context) {
if(this.navigatorList.length>){
this.navigatorList.removeRange(,this.navigatorList.length);//从第十个截取,后面都截取掉
}
return Container(
height: ScreenUtil().setHeight(),//只是自己大概预估的一个高度,后续可以再调整
padding: EdgeInsets.all(3.0),//为了不让它切着屏幕的边缘,我们给它一个padding
child: GridView.count(
crossAxisCount: ,//每行显示5个元素
padding: EdgeInsets.all(5.0),//每一项都设置一个padding,这样他就不挨着了。
children: navigatorList.map((item){
return _gridViewItemUI(context,item);
}).toList(),
),
);
}
} class AdBanner extends StatelessWidget {
final String adPicture; AdBanner({Key key, this.adPicture}) : super(key: key); @override
Widget build(BuildContext context) {
return Container(
child: Image.network(adPicture),
);
}
}

home_page.dart

升级的问题

flutter之前讲课是1.0的版本。现在最新版本是1.2的版本 我们需不要跟进????

升级的时候要开启科学上网才行。升级的时候目录内要有这个文件:pubspec.yaml

另外一种方式是把sdk下载下来直接覆盖我原有的文件就可以了。

最新文章

  1. WindowsForm--Bubble User Control
  2. iPhone的Push(推送通知)功能原理浅析
  3. JS Array ECMAScript5 Methods
  4. KxMenu下拉菜单
  5. 代码规范和常用的js插件以及测试工具
  6. ios-完成任务状态栏弹出提示view的小框架设计
  7. redis pool
  8. PHP使用COM 获取RTF内容
  9. CSS构造颜色、背景与图像
  10. java的单例设计模式
  11. Java基础知识(一) 自增、自减运算符
  12. We Chall-Prime Factory-Writeup
  13. [转载] Spark:大数据的“电光石火”
  14. 视频压缩:I帧、P帧、B帧
  15. Mac下面解决PYTHONPATH配置的方法
  16. 安装和使用git遇到的问题总结
  17. LINQ 详解
  18. linux监控文件夹内的文件数量
  19. Delphi.XE2破解方法
  20. html area标签详解

热门文章

  1. open-source Julius speech-recognition engine
  2. asp识别手机端
  3. 深入理解spring国际化
  4. 游戏开发之基础图像---3d图像处理
  5. 使用kbmmw 的调度事件动态显示时间
  6. 【BZOJ2729】[HNOI2012]排队 组合数
  7. 哈希表的java实现
  8. c# winform窗体间的传值
  9. Hibernate ManyToOne Mappings 多对一关联映射
  10. guava cache与spring集成