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. 每天一个linux命令(23):Linux 目录结构(转)

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

  2. Struts2使用POI创建Excel并下载

    本文将讲解在Struts2框架下如何使用POI创建Office Excel文档并实现下载功能. Apache POI ,操作微软文档的Java API,简单来说就是可以用来操作Office文档的API ...

  3. python pyinotify模块详解

    转载于http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23504396&id=2929446 1年多前就看过相关内容了, ...

  4. CSS入门学习

    一.What? CSS的全称是CascadingStyle Sheet,汉语意思是"级联样式表".通常又称为"风格样式表(StyleSheet)".它是用来进行 ...

  5. MacBook Pro使用初体验之Mac快捷键汇总(持续更新中)

    我于近日购置了一台13寸的MacBook Pro高配,打算開始进行iOS开发的学习.Pro的配置情况例如以下: (1)OS X Yosemite ,版本号10.10.3 (2)Retina显示屏,13 ...

  6. poj 1730Perfect Pth Powers(分解质因数)

                                                             id=1730">Perfect Pth Powers Time Li ...

  7. 通过WindowManager图片切换的效果

    最近为这个事情焦头烂额,原因无他.原来打算是把ViewPager放在WindowManager中,再设定一个定时器,让图片自动切换,但是搞了很久,发现无论如何,这个图片只显示一张.虽然日志看得出来图片 ...

  8. Shell中括号的作用

    Shell中括号的作用 作者:Danbo 时间:2015-8-7 单小括号() ①.命令组.括号中的命令将会断开一个子Shell顺序执行,所以括号中的变量不能被脚本余下的部分使用.括号中多个命令之间用 ...

  9. Docker的远程访问

    $docker : info (10.211.55是另一台服务器的地址) 频繁访问远程的docker服务器使用-H选项很麻烦,使用环境变量DOCKER_HOST, $export DOCKER_HOS ...

  10. 1022. Fib数列

    https://acm.sjtu.edu.cn/OnlineJudge/problem/1022 Description 定义Fib数列:1,1,2,3,5,8,13,…1,1,2,3,5,8,13, ...