Flutter-防京东商城项目-购物车 数据增加 全选反选功能-29

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。

代码文档

Flutter防京东商城源码(1-10)链接

Flutter防京东商城源码(11-20)链接

Flutter防京东商城源码(21-30)链接

Flutter防京东商城源码(31-46)链接

本章学到的效果:
请添加图片描述

先写购物车增加减小数量,回到在这里插入图片描述添加下面的代码

itemCountChange() {
  Storage.setString("cartList", json.encode(this._cartList));
  notifyListeners();
}

回到在这里插入图片描述添加下面的代码
导入

import 'package:provider/provider.dart';
import '../../provider/Cart.dart';

创建属性
在这里插入图片描述

var cartProvider;

初始化

@override
Widget build(BuildContext context) {

//--------------------------------------------
this.cartProvider = Provider.of<Cart>(context);
//--------------------------------------------

使用
在这里插入图片描述

//左侧按钮
Widget _leftBtn() {
  return InkWell(
    onTap: () {


//--------------------------------------------
      if(_itemData["count"]>1){
         _itemData["count"]--;
         this.cartProvider.itemCountChange();
      }
//--------------------------------------------



      
    },
    .........
  );
}

在这里插入图片描述

//右侧按钮
Widget _rightBtn() {
  return InkWell(
    onTap: (){


//--------------------------------------------
         _itemData["count"]++;
        this.cartProvider.itemCountChange();
//--------------------------------------------


        
    },
.........
  );
}

3.实现全选反选 回到在这里插入图片描述把里面的内容全部替换掉

List _cartList = []; //状态
bool _isCheckedAll = false; //状态
List get cartList => this._cartList;
bool get isCheckedAll => this._isCheckedAll;

Cart() {
  this.init();
}
//初始化的时候获取购物车数据
init() async {
  try {
    List cartListData = json.decode(await Storage.getString('cartList'));
    this._cartList = cartListData;
  } catch (e) {
    this._cartList = [];
  }
  //获取全选的状态
  this._isCheckedAll=this.isCheckAll();
  notifyListeners();
}

updateCartList() {
  this.init();
}

itemCountChange() {
  Storage.setString("cartList", json.encode(this._cartList));
  notifyListeners();
}

//全选 反选
checkAll(value) {
  for (var i = 0; i < this._cartList.length; i++) {
    this._cartList[i]["checked"] = value;
  }
  this._isCheckedAll = value;
  Storage.setString("cartList", json.encode(this._cartList));
  notifyListeners();
}

//判断是否全选
bool isCheckAll() {
  if (this._cartList.length > 0) {
    for (var i = 0; i < this._cartList.length; i++) {
      if (this._cartList[i]["checked"] == false) {
        return false;
      }
    }
    return true;
  }
  return false;
}

//监听每一项的选中事件
itemChage(){
    if(this.isCheckAll()==true){
      this._isCheckedAll=true;
    }else{
       this._isCheckedAll=false;
    }

    Storage.setString("cartList", json.encode(this._cartList));
    notifyListeners();
}

4.回到在这里插入图片描述编写每个Cell逻辑。

import 'package:provider/provider.dart';
import '../../provider/Cart.dart';

初始化
在这里插入图片描述

@override
Widget build(BuildContext context) {

//--------------------------------------------
  var cartProvider = Provider.of<Cart>(context);
//--------------------------------------------  
  return Container(

赋值
在这里插入图片描述

child: Checkbox(

//--------------------------------------------
  value: _itemData["checked"],
  //--------------------------------------------

  onChanged: (val) {

  //--------------------------------------------
   _itemData["checked"]=!_itemData["checked"];
   cartProvider.itemChage();
   //--------------------------------------------

  },
  activeColor: Colors.pink,
),

5.回到在这里插入图片描述编写底部全选按键逻辑
在这里插入图片描述

child: Checkbox(
//--------------------------------------------
  value: cartProvider.isCheckedAll,
//--------------------------------------------  
  activeColor: Colors.pink,
  onChanged: (val) {
//--------------------------------------------
    //实现全选或者反选
    cartProvider.checkAll(val);
//-------------------------------------------- 
  },
),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯汉栩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值