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 ...
随机推荐
- 26 组件中style标签lang属性和scoped属性的介绍
普通的style标签只支持普通的样式,如果想要启用scss或less,需要为style元素,设置lang属性 只要 咱们的style标签,是在 .vue 组件中定义的,那么,推荐都为style开启sc ...
- Codeforces Round #609 (Div. 2) C. Long Beautiful Integer
链接: https://codeforces.com/contest/1269/problem/C 题意: You are given an integer x of n digits a1,a2,- ...
- mysql官方下载安装教程(centos)
Linux下Mysql 5.6.30 tar包安装 (2016-04-27 22:45:39) 转载▼ 环境:centos 6.4 x64 先下载mysql安装包 打开 http://dev.mysq ...
- pycharm鼠标更改字体大小
Pycharm快捷键设置(鼠标滚动控制字体大小) 一.pycharm字体放大的设置 File -> setting -> Keymap ->在搜寻框中输入:increase -> ...
- 2019 杭电多校第八场 HDU - 6665 Calabash and Landlord 两矩形分平面
题意 给出两个矩形,问这两个矩形把平面分成了几部分. 分析 不需要什么高级技能,只需 “简单” 的分类讨论. (实在太难写了,对拍找出错误都不想改 推荐博客,其中有个很好的思路,即只讨论答案为2,3, ...
- TDOA 之 基站逻辑代码实现
在前一篇博文里描述了基站的逻辑部分,这里贴出来具体代码实现.https://www.cnblogs.com/tuzhuke/p/11689881.html 1 Sync 信息部分 case 'S': ...
- 物联网之窄带物联网(NB-IOT)
NB-IoT即窄带物联网(Narrow Band Internet of Things),NB-IOT构建在蜂窝网络之上,只消耗大约180KHZ的带宽,可直接部署于GSM(2G).UMTS(3G).L ...
- AS400遇到的一些问题和解决办法
1.没有权限进入distribution directory wrklnk 'QDLS\' >User not enrolled in system distribution direct ...
- spring boot 对某个接口进行次数限制,防刷。简易版。demo。
一般的项目 如果没有做防刷 容易被人爆接口 或者就是说没有做token防刷过滤. 容易被人用正常的token刷接口.有些token非一次性. 用户登录之后生成token会有一个过期时间,但一般没有做频 ...
- jquery validate 表单验证插件 代码
/* 表单验证 */ var signupFormValidator = $("#signupForm").validate({ /* 自定义验证规则 */ rules : { o ...