38 Flutter仿京东商城项目 渲染结算页面商品数据
加群452892873 下载对应38课文件,运行方法,建好项目,直接替换lib目录
CartServices.dart
import 'dart:convert'; import 'Storage.dart';
import '../config/Config.dart'; class CartServices {
static addCart(item) async {
//把对象转换成Map类型的数据
item = CartServices.formatCartData(item);
try {
List cartListData = json.decode(await Storage.getString('cartList'));
bool hasData = cartListData.any((value) {
return value["_id"] == item['_id'] &&
value['selectedAttr'] == item['selectedAttr'];
});
if (hasData) {
for (var i = ; i < cartListData.length; i++) {
if (cartListData[i]["_id"] == item['_id'] &&
cartListData[i]['selectedAttr'] == item['selectedAttr']) {
cartListData[i]['count'] = cartListData[i]['count'] + ;
}
}
await Storage.setString('cartList', json.encode(cartListData));
} else {
cartListData.add(item);
await Storage.setString('cartList', json.encode(cartListData));
}
} catch (e) {
List tempList = [];
tempList.add(item);
await Storage.setString("cartList", json.encode(tempList));
}
} //过滤数据
static formatCartData(item) {
//处理图片:
String pic = item.pic;
pic = Config.domain + pic.replaceAll('\\', '/'); final Map data = new Map<String, dynamic>();
data['_id'] = item.sId;
data['title'] = item.title;
//处理string和Int类型的购物车数据:
if (item.price is int || item.price is double) {
data['price'] = item.price;
} else {
data['price'] = double.parse(item.price);
} data['selectedAttr'] = item.selectedAttr;
data['count'] = item.count;
data['pic'] = pic;
//是否选中
data['checked'] = true;
return data;
} //获取购物车选中的数据:
static getCheckOutData() async{
List cartListData=[];
List tempCheckOutData=[];
try{
cartListData=json.decode(await Storage.getString('cartList'));
}catch(e){
cartListData=[];
}
print(cartListData);
for(var i=;i<cartListData.length;i++){
if(cartListData[i]['checked']==true){
tempCheckOutData.add(cartListData[i]);
}
}
return tempCheckOutData; }
}
provider/CheckOut.dart
import 'package:flutter/material.dart';
import 'dart:convert'; import '../services/Storage.dart'; class CheckOut with ChangeNotifier {
List _checkOutListData = []; //购物车数据 List get checkOutListData => this._checkOutListData;
changeCheckOutListData(data){
this._checkOutListData=data;
notifyListeners();
}
}
38 Flutter仿京东商城项目 渲染结算页面商品数据的更多相关文章
- 22 Flutter仿京东商城项目 inappbrowser 加载商品详情、保持页面状态、以及实现属性筛选业务逻辑
加群452892873 下载对应21可文件,运行方法,建好项目,直接替换lib目录,在往pubspec.yaml添加上一下扩展. cupertino_icons: ^0.1.2 flutter_swi ...
- 01-02 Flutter仿京东商城项目 功能分析、底部导航Tab切换以及路由配置、架构搭建:(Flutter仿京东商城项目 首页布局以及不同终端屏幕适配方案)
Flutter和Dart交流学习群:交流群:452892873 01Flutter仿京东商城项目 功能分析.底部导航Tab切换以及路由配置.架构搭建 02Flutter仿京东商城项目 首页布局以及不同 ...
- 42 Flutter仿京东商城项目 修改默认收货地址 显示默认收货地址
CheckOut.dart import 'package:flutter/material.dart'; import '../services/ScreenAdapter.dart'; impor ...
- 37 Flutter仿京东商城项目 结算页面布局
加群452892873 下载对应34课文件,运行方法,建好项目,直接替换lib目录 CheckOut.dart import 'package:flutter/material.dart'; impo ...
- 07-08 Flutter仿京东商城项目 商品分类页面布局:Flutter仿京东商城项目 商品分类页面数据渲染
Flutter实战(交流群:452892873) 本项目是一个实战项目,根据目录建文件,并复制从第一节到最新更新的文章,可以构成完整的一个请求后台数据的项目: CateModel.dart class ...
- 21 Flutter仿京东商城项目 商品详情 请求接口渲染数据 商品属性数据渲染
加群452892873 下载对应21可文件,运行方法,建好项目,直接替换lib目录,在往pubspec.yaml添加上一下扩展. cupertino_icons: ^0.1.2 flutter ...
- 41 Flutter 仿京东商城项目签名验证 增加收货地址、显示收货地址 事件广播
加群452892873 下载对应41课文件,运行方法,建好项目,直接替换lib目录 AddressAdd.dart import 'package:dio/dio.dart'; import 'pac ...
- 39 Flutter仿京东商城项目 收货地址列表、增加 修改收货地址布局、弹出省市区选择器
加群452892873 下载对应39课文件,运行方法,建好项目,直接替换lib目录 pubspec.yaml city_pickers: ^ AddressAdd.dart import 'packa ...
- 36 Flutter仿京东商城项目 用户登录 退出登录 事件广播更新状态
Login.dart import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:flutter/material.da ...
随机推荐
- IIS 自动化发布工具实现【一】
[持续更新中啦] 过去一年,有在尝试做.net 这块的开发运维工作.基于现在的开发场景,写了一套差异发布工具.后面用python重写了一套,现学现卖. 主要功能: 差异打包.自动发布.自动回滚 实现架 ...
- maven 打包到本地库
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.2.0 -Dpackaging= ...
- Thrift使用入门---RPC服务
https://blog.csdn.net/zkp_java/article/details/81879577 RPC基本原理 大部分的RPC框架都遵循如下三个开发步骤: RPC通信过程如下图所示 通 ...
- Laravel 队列不执行的原因,job缓存
laravel关于异步消息队列queue不生效(job缓存)解决办法 php artisan queue:restart 每次修改代码都需要执行上面的命令,执行后成功解决! 然后再次执行 php ar ...
- MyBatis 3.0_[tp-24-25]_映射文件_参数处理_#与$取值区别_#{}更丰富的用法
笔记要点出错分析与总结 /**================Mybatis参数值的获取:#和$符号的区别=============== * #{}:可以获得map中的值或者pojo对象属性的值; * ...
- machine learning(13) -- solving the problem of overfitting:regularization
solving the problem of overfitting:regularization 发生的在linear regression上面的overfitting问题 发生在logistic ...
- Django后台中文乱码
无论如何,刚开始一定要写上默认编码utf8!!!!!! 第一种办法: 检查 ...\Lib\site-packages\Django-1.10.2-py2.7.egg\django\conf\loca ...
- 07_gitee源码参考
Django REST framework Tutorial 教程 码云:https://gitee.com/venicid/tutorial-api
- js原型模式和继承
function SuperType() { this.property = true; //原型属性 } //基类方法 SuperType.prototype.getSuperValue = fun ...
- MondoDB介绍 Python与MongoDB用法,安装PyMongo
http://blog.csdn.net/t_ells/article/details/50265889 MongoDB最新版本下载在官网的DownLoad菜单下:http://www.mongodb ...