56.购物车_商品数量控制区域制作

主要做购物车中的数量这里

cart_page文件夹下新建cart_count.dart

减少按钮

因为会有点击事件,所以这里我们使用InkWell。

child里面外层套一个Container,为什么要外层始终套一个Container呢,因为我们可以设置内边距、外边距、宽和高等等

  //减少按钮
Widget _reduceBtn(){
return InkWell(
onTap: (){},
child: Container(
width: ScreenUtil().setWidth(),//是正方形的所以宽和高都是45
height: ScreenUtil().setHeight(),
alignment: Alignment.center,//上下左右都居中
decoration: BoxDecoration(
color: Colors.white,
border: Border(//外层已经有边框了所以这里只设置右边的边框
right:BorderSide(width: 1.0,color: Colors.black12)
)
),
child: Text('-'),
),
);
}

加号按钮

和减号按钮几乎一样直接复制减号的方法过来改一下

中间数字区域

//中间数量显示区域
Widget _countArea(){
return Container(
width: ScreenUtil().setWidth(),//爬两个数字的这里显示不下就宽一点70
height: ScreenUtil().setHeight(),//高度和加减号保持一样的高度
alignment: Alignment.center,//上下左右居中
color: Colors.white,//北京颜色 设置为白色
child: Text(''),//先默认设置为1 因为后续是动态的获取数字
);
} }

组合组件

加入主页的UI里面cart_item.dart里面

先引入:import './cart_count.dart';

在商品名称的下面,使用CartCount()

页面展示

最终代码

cart_count.dart

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; class CartCount extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: ScreenUtil().setWidth(),
margin: EdgeInsets.only(top:5.0),
decoration: BoxDecoration(
border: Border.all(width: ,color: Colors.black12)//设置所有的边框宽度为1 颜色为浅灰
),
child: Row(
children: <Widget>[
_reduceBtn(),
_countArea(),
_addBtn()
],
),
);
}
//减少按钮
Widget _reduceBtn(){
return InkWell(
onTap: (){},
child: Container(
width: ScreenUtil().setWidth(),//是正方形的所以宽和高都是45
height: ScreenUtil().setHeight(),
alignment: Alignment.center,//上下左右都居中
decoration: BoxDecoration(
color: Colors.white,
border: Border(//外层已经有边框了所以这里只设置右边的边框
right:BorderSide(width: 1.0,color: Colors.black12)
)
),
child: Text('-'),
),
);
}
//加号
Widget _addBtn(){
return InkWell(
onTap: (){},
child: Container(
width: ScreenUtil().setWidth(),//是正方形的所以宽和高都是45
height: ScreenUtil().setHeight(),
alignment: Alignment.center,//上下左右都居中
decoration: BoxDecoration(
color: Colors.white,
border: Border(//外层已经有边框了所以这里只设置右边的边框
left:BorderSide(width: 1.0,color: Colors.black12)
)
),
child: Text('+'),
),
);
} //中间数量显示区域
Widget _countArea(){
return Container(
width: ScreenUtil().setWidth(),//爬两个数字的这里显示不下就宽一点70
height: ScreenUtil().setHeight(),//高度和加减号保持一样的高度
alignment: Alignment.center,//上下左右居中
color: Colors.white,//北京颜色 设置为白色
child: Text(''),//先默认设置为1 因为后续是动态的获取数字
);
} }

cart_item.dart

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../../model/cartInfo.dart';
import './cart_count.dart'; class CartItem extends StatelessWidget {
final CartInfoModel item;
CartItem(this.item); @override
Widget build(BuildContext context) {
print(item);
return Container(
margin: EdgeInsets.fromLTRB(5.0, 2.0, 5.0, 2.0),
padding: EdgeInsets.fromLTRB(5.0, 10.0, 5.0, 10.0),
decoration: BoxDecoration(
color: Colors.white,
border: Border(
bottom: BorderSide(width: ,color: Colors.black12)
)
),
child: Row(
children: <Widget>[
_cartCheckBt(),
_cartImage(),
_cartGoodsName(),
_cartPrice()
],
),
);
}
//复选框
Widget _cartCheckBt(){
return Container(
child: Checkbox(
value: true,
activeColor: Colors.pink,//激活颜色设置为粉色
onChanged:(bool val){ }
),
);
}
//商品图片
Widget _cartImage(){
return Container(
width: ScreenUtil().setWidth(),
padding: EdgeInsets.all(3.0),//内边距
decoration: BoxDecoration(
border: Border.all(width:1.0,color: Colors.black12)
),
child: Image.network(item.images),//item声明好了 所以不用传递
);
} //商品名称
Widget _cartGoodsName() {
return Container(
width: ScreenUtil().setWidth(),
padding: EdgeInsets.all(),
alignment: Alignment.topLeft,//顶端左对齐
child: Column(
children: <Widget>[
Text(item.goodsName),
CartCount()
],
),
);
} //商品价格
Widget _cartPrice() {
return Container(
width: ScreenUtil().setWidth(),//只要合起来不超过750 就不会溢出
alignment: Alignment.centerRight,//居中靠右
child: Column(
children: <Widget>[
Text('¥${item.price}'),
Container(//用来放icon删除按钮
child: InkWell(
onTap: (){},
child: Icon(
Icons.delete_forever,
color: Colors.black26,//浅灰色
size: ,
),
),
)
],
),
);
} }

Flutter实战视频-移动电商-56.购物车_商品数量控制区域制作的更多相关文章

  1. Flutter实战视频-移动电商-61.购物车_商品数量的加减操作

    61.购物车_商品数量的加减操作 provide/cart.dart pages/cart_page/cart_count.dart 先引入provide和cartProvide 定义接收一个item ...

  2. Flutter实战视频-移动电商-53.购物车_商品列表UI框架布局

    53.购物车_商品列表UI框架布局 cart_page.dart 清空原来写的持久化的代码; 添加对应的引用,stless生成一个静态的类.建议始终静态的类,防止重复渲染 纠正个错误,上图的CartP ...

  3. Flutter实战视频-移动电商-54.购物车_商品列表子项布局

    54.购物车_商品列表子项布局 子项做成一个单独的页面 新建cartItem.dart文件 新建cart_page文件夹,在里面新建cart_item.dart页面, 页面名字叫做CartItem 定 ...

  4. Flutter实战视频-移动电商-52.购物车_数据模型建立和Provide修改

    52.购物车_数据模型建立和Provide修改 根据json数据生成模型类 {,"price":830.0,"images":"http://imag ...

  5. Flutter实战视频-移动电商-55.购物车_底部结算栏UI制作

    55.购物车_底部结算栏UI制作 主要做下面结算这一栏目 cart_bottom.dart页面 先设置下内边距 拆分成三个子元素 全选 因为有一个文本框和一个全选的text文本,所以这里也用了Row布 ...

  6. Flutter实战视频-移动电商-57.购物车_在Model中增加选中字段

    57.购物车_在Model中增加选中字段 先修改model类 model/cartInfo.dart类增加是否选中的属性 修改provide 修改UI部分pages/cart_page/cart_it ...

  7. Flutter实战视频-移动电商-58.购物车_删除商品功能制作

    58.购物车_删除商品功能制作 主要做购物车后面的删除按钮 删除的方法写在provide里面 provide/cart.dart文件 传入goodsId,循环对比,找到后进行移除 //删除单个购物车商 ...

  8. Flutter实战视频-移动电商-59.购物车_计算商品价格和数量

    59.购物车_计算商品价格和数量 本节课主要是加上自动计算的功能 provide/cart.dart 在provide的类里面增加两个变量 cart_bottom.dart 三个组件因为我们都需要套一 ...

  9. Flutter实战视频-移动电商-60.购物车_全选按钮的交互效果制作

    60.购物车_全选按钮的交互效果制作 主要做全选和复选框的这两个功能 provide/cart.dart 业务逻辑写到provide里面 先持久化取出来字符串,把字符串编程list.循环list ca ...

随机推荐

  1. [转]eclipse查看某个java类属于哪个jar包

    原文地址:https://blog.csdn.net/csdnliuxin123524/article/details/73572836 在eclipse界面直接按ctrl+shift+t,弹出以下界 ...

  2. svn 版本管理与自动部分发布(转)

    作为团队开发项目时,会遇到项目的版本管理,测试部署与发布部署,下面是摘至他人的关于版本管理和自动部署的方案. svn自动部署的实现: 使用svn的hook功能 1.在版本库的hooks目录下面,有一些 ...

  3. ecshop购买记录(近期成交数量)显示历史记录

    默认只显示最近30天内的销售记录, 按照下面方法修改 就可以显示所有的了 打开 /includes/lib_insert.php 文件 找到下面代码,将之删除即可,一共有两处,都要删除. AND ' ...

  4. IOS版App的控件元素定位

    前言 Android版App的控件元素可以通过Android studio自带的工具uiautomatorviewer来协助定位! IOS版App的控件元素可以通过Appium来实现(未实现),或ap ...

  5. duplicate symbols for architeture arm64 linker command failed with code 1(use-c to see invocation)

    duplicate symbols for architeture arm64  linker command failed with code 1(use-c to see invocation) ...

  6. ​vmware虚拟机centos网络配置错误,执行/etc/init.d/network start 或 restart 提示Device eth0 has different MAC address than expected, ignoring

    vmware虚拟机centos网络配置错误,执行/etc/init.d/network start 或 restart 提示Device eth0 has different MAC address ...

  7. Post Man 调用CRMAPI

    官方文档 https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/webapi/setup-postman ...

  8. CMTime 与 CMTimeMakeWithSeconds

    1.首先先看代码,这段代码的作用就是要让视频播放区域有个封面.不会显的太空当. - (void)avPlayerDidPlayed:(NSNotification *)noti { [_avPlaye ...

  9. MT6737 Android N 平台 Audio系统学习----录音到播放录音流程分析

    http://blog.csdn.net/u014310046/article/details/54133688 本文将从主mic录音到播放流程来进行学习mtk audio系统架构.  在AudioF ...

  10. 程序员代码面试指南:IT名企算法与数据结构题目最优解

      第1章栈和队列 1设计一个有getMin功能的栈(士★☆☆☆) 1由两个栈组成的队列(尉★★☆☆) 5如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 8猫狗队列(士★☆☆☆)10用一个栈实现另一 ...