1、楼层标题组件

该组件非常简单,只接收一个图片地址,然后显示即可:

class FloorTitle extends StatelessWidget {
  final String picture_address;
  FloorTitle({this.picture_address});   @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.all(8.0),
      child: Image.network(picture_address),
    );
  }
}

2、楼层商品组件的编写

在编写楼层商品组件时,我们要对它详细的拆分,我们把一个组件拆分成如下内部方法。

  • goodsItem:每个商品的子项,也算是这个类的最小模块了。
  • firstRow:前三个商品的组合,是一个Row组件。
  • otherGoods:其它商品的组合,也是一个Row组件。

总后把这些组件通过Column合起来。总代码如下:

/*楼层商品组件*/
class FloorContent extends StatelessWidget {
  final List floorGoodsList;   FloorContent({Key key, this.floorGoodsList}) : super(key: key);   @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: <Widget>[
          _firstRow(),
          _otherGoods()
        ],
      ),
    );
  }   Widget _firstRow(){
    return Row(
      children: <Widget>[
        _goodsItem(floorGoodsList[0]),
        Column(
          children: <Widget>[
           _goodsItem(floorGoodsList[1]),
           _goodsItem(floorGoodsList[2]),
          ],
        )
      ],
    );
  }   Widget _otherGoods(){
    return Row(
      children: <Widget>[
       _goodsItem(floorGoodsList[3]),
       _goodsItem(floorGoodsList[4]),
      ],
    );
  }   Widget _goodsItem(Map goods){     return Container(
      width:ScreenUtil().setWidth(375),
      child: InkWell(
        onTap:(){print('点击了楼层商品');},
        child: Image.network(goods['image']),
      ),
    );
  } }

3、数据的准备

不多说了,一次性全部写出来。

String floor1Title =data['data']['floor1Pic']['PICTURE_ADDRESS'];/*楼层1的标题图片*/
String floor2Title =data['data']['floor2Pic']['PICTURE_ADDRESS'];/*楼层1的标题图片*/
String floor3Title =data['data']['floor3Pic']['PICTURE_ADDRESS'];/*楼层1的标题图片*/
ist<Map> floor1 = (data['data']['floor1'] as List).cast();          /*楼层1商品和图片*/ 
List<Map> floor2 = (data['data']['floor2'] as List).cast();      /*楼层1商品和图片*/ 
List<Map> floor3 = (data['data']['floor3'] as List).cast();      /*楼层1商品和图片*/  return SingleChildScrollView(
  child: Column(
  children: <Widget>[
      SwiperDiy(swiperDataList:swiperDataList ),   /*页面顶部轮播组件*/
      TopNavigator(navigatorList:navigatorList),   /*导航组件        */
      AdBanner(advertesPicture:advertesPicture), 
      LeaderPhone(leaderImage:leaderImage,leaderPhone: leaderPhone),  /*广告组件*/  
      Recommend(recommendList:recommendList),    
      FloorTitle(picture_address:floor1Title),
      FloorContent(floorGoodsList:floor1),
      FloorTitle(picture_address:floor2Title),
      FloorContent(floorGoodsList:floor2),
      FloorTitle(picture_address:floor3Title),
      FloorContent(floorGoodsList:floor3),
    ],
) ,
);

效果图:

17-Flutter移动电商实战-首页_楼层区域的编写的更多相关文章

  1. Flutter实战视频-移动电商-15.首页_商品推荐模块编写

    15.首页_商品推荐模块编写 商品推荐,我们做成可以横向滚动的 分析: 上面是标题,下面是ListView,里面是一个Column, column分三层,第一是图片,第二是价格,第三是市场价格 小细节 ...

  2. Flutter移动电商实战 --(17)首页_楼层区域的编写

    1.楼层标题组件 该组件非常简单,只接收一个图片地址,然后显示即可: class FloorTitle extends StatelessWidget { final String picture_a ...

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

    1.flutter_ScreenUtil插件简介 flutter_ScreenUtil屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理的布局. 插件会让你先设置一个UI稿的尺寸,他会根据这个尺寸 ...

  4. 18-Flutter移动电商实战-首页_火爆专区商品接口制作

    1.获取接口的方法 在service/service_method.dart里制作方法.我们先不接收参数,先把接口调通. Future getHomePageBeloConten() async{   ...

  5. Flutter实战视频-移动电商-17.首页_楼层组件的编写技巧

    17.首页_楼层组件的编写技巧 博客地址: https://jspang.com/post/FlutterShop.html#toc-b50 楼层的效果: 标题 stlessW快速生成: 接收一个St ...

  6. 微信小程序电商实战-首页(上)

    嗨,大家好!经过近两周的精心准备终于开始微信小程序电商实战之路喽.那么最终会做成什么样呢?当然可以肯定不会只做一个静态demo哦,先把我们小程序电商实战的整体架构发出来晒一下,请看下图:   架构图. ...

  7. Flutter实战视频-移动电商-09.首页_项目结构建立和获取数据

    09.首页_项目结构建立和获取数据 在config下创建service_url.dart 用来配置我们后端接口的配置文件 一个变量存 接口地址,一个接口方法地址 所有后天请求数据的方法都放在这个文件夹 ...

  8. Flutter实战视频-移动电商-11.首页_屏幕适配方案讲解

    11.首页_屏幕适配方案讲解 国人写的屏幕适配插件: https://github.com/OpenFlutter/flutter_screenutil 最新版本是0.5.1 在pubspec.yam ...

  9. Flutter实战视频-移动电商-13.首页_广告Banner组件制作

    13.首页_广告Banner组件制作 主要是做这个小广告条. 其实就是读取一个图片做一个widget放到这里 使用stlessW快速生成 定义一个变量存放图片的url地址: 这样我们的广告条就写完了 ...

随机推荐

  1. java面向对象的基本概念

    面向对象的基本概念 这里先介绍面向对象程序设计的一些关键概念,并开始使用类,你需要学习一些术语,我们尽量用比较浅显的语言来介绍,因为这些内容都比较重要,所以希望大家好好好理解. 一.什么是对象和面向对 ...

  2. Spring项目中的数据库加密

    有时候为了安全,我们需要对数据库密码进行加密: SpringDruid数据源加密数据库密码 当我们初步开始打造系统时,什么都没有一片空白,而数据源使用的是SpringDruid时,我们可以通过这篇博客 ...

  3. PageResult

    PageResult.java package com.yy.core.pojo.entity; import java.io.Serializable; import java.util.List; ...

  4. nodejs vue的安装

    1.https://nodejs.org/en/ 下载最新版nodejs 2.安装好后win+R输入cmd(管理员权限键入):node -v(node版本)npm -v(npm版本)查看版本号,如图所 ...

  5. React学习笔记①

    三种导出方式 export let num = 1://1 let num2 = 2://2 export {num2};//2 export default {default}//3 三种导入方式 ...

  6. js中函数的参数为函数的情况即回调函数

    js中函数的参数可以是数组对象也可以是函数,当参数为函数时我们叫做回调函数 //定义回调函数function B() { console.log("函数B")setTimeout( ...

  7. Springboot2 jpa druid多数据源

    package com.ruoyi; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans ...

  8. linux基础命令学习

    一 su命令 1. [yunwei@elymedia ~]$ yunwei   表示当前用户名 @elymedia   表示主机名 - 表示当前路径,涉及到当前用户的主目录(家目录) $  表示普通用 ...

  9. (1)jmeter录制脚本(使用代理的方式)

    (1)jmeter录制脚本(使用代理的方式) jmeter 2018年07月09日 17时27分24秒 很多APP使用badboy是无法录制的,这种情况下需要使用chrome或Firefox,如果能联 ...

  10. Flask 开启多进程或多线程

    2018-07-15 23:31:20 yang9315 阅读数 7703更多 分类专栏: python   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接 ...