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

 

子项做成一个单独的页面

新建cartItem.dart文件

新建cart_page文件夹,在里面新建cart_item.dart页面,

页面名字叫做CartItem

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

定义变量,购物车的model类,构造函数接收

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

先做一下上下左右的边距,margin是外边距。padding是内边距

内边距,外边距,下边的边框样式

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

我们这里使用Row布局,把没一块都分成一个单独的Widget防止嵌套

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

首先编写复选按钮的样式

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

商品图片方法:

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

 

商品名称

因为我们还要做商品的数量的加减,所以这里用了Column布局

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

 

商品价格

 

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

拼装方法

 

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

 

cart_page

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

 

效果展示

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

 

最终代码

cart_item.dart

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../../model/cartInfo.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: 1,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(150),
      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(300),
      padding: EdgeInsets.all(10),
      alignment: Alignment.topLeft,//顶端左对齐
      child: Column(
        children: <Widget>[
          Text(item.goodsName)
        ],
      ),
    );
  }

  //商品价格
  Widget _cartPrice() {
    return Container(
      width: ScreenUtil().setWidth(150),//只要合起来不超过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: 30,
              ),
            ),
          )
        ],
      ),
    );
  }

}
View Code

相关文章:

  • 2022-01-28
  • 2022-12-23
  • 2021-06-03
  • 2021-08-13
  • 2021-12-17
  • 2021-12-04
  • 2022-02-15
  • 2022-02-19
猜你喜欢
  • 2021-12-24
  • 2022-02-05
  • 2021-06-04
  • 2021-12-02
  • 2021-06-18
  • 2021-10-07
  • 2021-11-21
相关资源
相似解决方案