diff --git a/lib/retrofit/min_api.g.dart b/lib/retrofit/min_api.g.dart index 56e0cc46..e43784e1 100644 --- a/lib/retrofit/min_api.g.dart +++ b/lib/retrofit/min_api.g.dart @@ -64,7 +64,7 @@ class _MinApiService implements MinApiService { } @override - Future> shoppingCart(param, header) async { + Future> shoppingCart(param, header) async { ArgumentError.checkNotNull(param, 'param'); ArgumentError.checkNotNull(header, 'header'); const _extra = {}; @@ -79,9 +79,9 @@ class _MinApiService implements MinApiService { extra: _extra, baseUrl: baseUrl), data: _data); - final value = BaseData.fromJson( + final value = BaseData.fromJson( _result.data, - (json) => FindMiNiGroupList.fromJson(json), + (json) => ShoppingCart.fromJon(json), ); return value; } diff --git a/lib/store/store_order.dart b/lib/store/store_order.dart index 697588a6..c1a28881 100644 --- a/lib/store/store_order.dart +++ b/lib/store/store_order.dart @@ -9,13 +9,11 @@ import 'package:huixiang/retrofit/data/activity.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/findMiNiGroupList.dart'; import 'package:huixiang/retrofit/data/miNiDetail.dart'; -import 'package:huixiang/retrofit/data/order_info.dart'; import 'package:huixiang/retrofit/data/store_info.dart'; import 'package:huixiang/retrofit/min_api.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/store/store_view/product_sku.dart'; import 'package:huixiang/store/store_view/shop_car.dart'; -import 'package:huixiang/store/store_view/shop_goods.dart'; import 'package:huixiang/store/store_view/store_activity.dart'; import 'package:huixiang/store/store_view/store_info.dart'; import 'package:huixiang/store/store_view/store_order_list.dart'; @@ -51,6 +49,7 @@ class _StoreOrderPage extends State List _widgetOptions; int allCount = 0; double allPrice = 0; + StoreOrderListPage storeOrderListPage; ScrollController controller = ScrollController(); @@ -63,16 +62,17 @@ class _StoreOrderPage extends State length: 2, vsync: this, ); - - _widgetOptions = [ - StoreOrderListPage( + storeOrderListPage = StoreOrderListPage( widget.arguments, activitys, storeInfo, controller, _queryMiNiDetail, - _fc, - ), + _fc + ); + + _widgetOptions = [ + storeOrderListPage, ///星店活动, StoreActivity( @@ -84,10 +84,28 @@ class _StoreOrderPage extends State queryStoreInfo(); } - _fc(ac, ap) { + _fc(ProductListBean plb) { setState(() { - allCount = ac; - allPrice = ap; + allCount = 0; + allPrice = 0; + bool flag = false; + for(var i = 0;i < productLists.length;i++){ + if(productLists[i].id == plb.id){ + flag = true; + if(plb.buyNum == 0) + productLists.removeAt(i); + else productLists[i] = plb; + break; + } + } + storeOrderListPage.notifyList(productLists); + if(!flag && plb.buyNum != 0) + productLists.add(plb); + productLists.forEach((element) { + allCount += element.buyNum; + allPrice += double.parse(element.price) * + element.buyNum; + }); }); } @@ -108,7 +126,7 @@ class _StoreOrderPage extends State String minToken = minStoreInfo["token"]; String tenant = widget.arguments["tenant"]; SharedPreferences.getInstance().then( - (value) => { + (value) => { value.setString('minToken', minToken), value.setString('tenant', tenant), }, @@ -123,7 +141,6 @@ class _StoreOrderPage extends State }); } - /// 查询店铺信息 queryStoreInfo() async { final SharedPreferences value = await SharedPreferences.getInstance(); @@ -451,12 +468,7 @@ class _StoreOrderPage extends State context: context, backgroundColor: Colors.transparent, builder: (context) { - return ShopCar(productLists, _queryMiNiDetail, (ac, ap) { - setState(() { - allCount = ac; - allPrice = ap; - }); - }); + return ShopCar(productLists, _queryMiNiDetail, _fc); }, ); } diff --git a/lib/store/store_view/shop_car.dart b/lib/store/store_view/shop_car.dart index b09e315f..f2bb7779 100644 --- a/lib/store/store_view/shop_car.dart +++ b/lib/store/store_view/shop_car.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/retrofit/data/findMiNiGroupList.dart'; -import 'package:huixiang/retrofit/data/order_info.dart'; import 'package:huixiang/store/store_view/shop_goods.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/round_button.dart'; @@ -11,7 +10,7 @@ class ShopCar extends StatefulWidget { final List productLists; final Function(String id) queryMiNiDetail; - final Function(int allCount, double allPrice) fc; + final Function(ProductListBean plb) fc; ShopCar(this.productLists, this.queryMiNiDetail, this.fc); @@ -23,6 +22,41 @@ class ShopCar extends StatefulWidget { } class _ShopCar extends State { + int allCount = 0; + double allPrice = 0; + + @override + void initState() { + super.initState(); + _fc(null); + } + + _fc(ProductListBean plb) { + setState(() { + if(plb != null){ + allCount = 0; + allPrice = 0; + bool flag = false; + for(var i = 0;i < widget.productLists.length;i++){ + if(widget.productLists[i].id == plb.id){ + flag = true; + if(plb.buyNum == 0) + widget.productLists.removeAt(i); + else widget.productLists[i] = plb; + break; + } + } + if(!flag) + widget.productLists.add(plb); + } + widget.productLists.forEach((element) { + allCount += element.buyNum; + allPrice += double.parse(element.price) * + element.buyNum; + }); + }); + } + @override Widget build(BuildContext context) { return StatefulBuilder(builder: (context1, state) { @@ -61,7 +95,10 @@ class _ShopCar extends State { ), ), InkWell( - onTap: () {}, + onTap: () { + state(() { + }); + }, child: Image.asset( "assets/image/delete.png", width: 22, @@ -84,7 +121,10 @@ class _ShopCar extends State { itemBuilder: (context, position) { return GestureDetector( onTap: () {}, - child: ShopGoods(widget.productLists, position, widget.queryMiNiDetail, widget.fc), + child: ShopGoods(widget.productLists, position, widget.queryMiNiDetail, (plb){setState(() { + _fc(plb); + widget.fc(plb); + });}), ); }, ), @@ -118,7 +158,7 @@ class _ShopCar extends State { ), ), Text( - "¥19.00", + "¥"+allPrice.toString(), style: TextStyle( fontSize: 20.sp, fontWeight: MyFontWeight.medium, @@ -126,16 +166,23 @@ class _ShopCar extends State { ), ), Spacer(), - RoundButton( - width: 103.w, - height: 54.h, - text: S.current.jiesuan, - textColor: Colors.white, - fontWeight: MyFontWeight.regular, - backgroup: Color(0xFF32A060), - radius: 0, - fontSize: 16.sp, - padding: EdgeInsets.symmetric(vertical: 5.h), + GestureDetector( + onTap: () { + Navigator.of(context).pushNamed( + '/router/settlement', + ); + }, + child: RoundButton( + width: 103.w, + height: 54.h, + text: S.current.jiesuan, + textColor: Colors.white, + fontWeight: MyFontWeight.regular, + backgroup: Color(0xFF32A060), + radius: 0, + fontSize: 16.sp, + padding: EdgeInsets.symmetric(vertical: 5.h), + ), ), ], ), @@ -158,7 +205,7 @@ class _ShopCar extends State { child: RoundButton( width: 17, height: 17, - text: "1", + text: allCount.toString(), textColor: Colors.white, fontWeight: MyFontWeight.regular, backgroup: Color(0xFF32A060), diff --git a/lib/store/store_view/shop_goods.dart b/lib/store/store_view/shop_goods.dart index b912ffd4..5a4fc84b 100644 --- a/lib/store/store_view/shop_goods.dart +++ b/lib/store/store_view/shop_goods.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/retrofit/data/findMiNiGroupList.dart'; -import 'package:huixiang/retrofit/data/order_info.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:huixiang/view_widget/custom_image.dart'; @@ -11,7 +10,7 @@ class ShopGoods extends StatefulWidget { final List productListBeans; final int position; final Function(String id) queryMiNiDetail; - final Function(int allCount, double allPrice) fc; + final Function(ProductListBean plb) fc; ShopGoods( this.productListBeans, @@ -165,14 +164,7 @@ class _ShopGoods extends State { 0) widget.productListBeans[widget.position] .buyNum--; - int allCount = 0; - double allPrice = 0; - widget.productListBeans.forEach((element) { - allCount += element.buyNum; - allPrice += double.parse(element.price) * - element.buyNum; - }); - widget.fc(allCount, allPrice); + widget.fc(widget.productListBeans[widget.position]); } }); }, @@ -201,14 +193,7 @@ class _ShopGoods extends State { setState(() { { widget.productListBeans[widget.position].buyNum++; - int allCount = 0; - double allPrice = 0; - widget.productListBeans.forEach((element) { - allCount += element.buyNum; - allPrice += double.parse(element.price) * - element.buyNum; - }); - widget.fc(allCount, allPrice); + widget.fc(widget.productListBeans[widget.position]); } }); }, diff --git a/lib/store/store_view/store_order_list.dart b/lib/store/store_view/store_order_list.dart index 04e1759a..d40b197c 100644 --- a/lib/store/store_view/store_order_list.dart +++ b/lib/store/store_view/store_order_list.dart @@ -18,8 +18,9 @@ class StoreOrderListPage extends StatefulWidget { final List activitys; final StoreInfo storeInfo; final ScrollController controller; - final Function(int allCount, double allPrice) fc; + final Function(ProductListBean plb) fc; final Function(String id) queryMiNiDetail; + _StoreOrderListPage _storeOrderListPage; StoreOrderListPage( this.arguments, @@ -27,12 +28,17 @@ class StoreOrderListPage extends StatefulWidget { this.storeInfo, this.controller, this.queryMiNiDetail, - this.fc, + this.fc ); @override State createState() { - return _StoreOrderListPage(); + _storeOrderListPage = _StoreOrderListPage(); + return _storeOrderListPage; + } + + void notifyList(List product){ + _storeOrderListPage.notifyList(product); } } @@ -42,7 +48,18 @@ class _StoreOrderListPage extends State { ApiService apiService; MinApiService minService; List appletProducts; - List productListBeans; + List productListBeans = []; + + void notifyList(List product){ + setState(() { + product.forEach((e0) { + productListBeans.forEach((e1) { + if(e0.id == e1.id) + e1.buyNum = e0.buyNum; + }); + }); + }); + } @override void initState() { @@ -74,8 +91,9 @@ class _StoreOrderListPage extends State { if (baseData != null && baseData.isSuccess) { setState(() { appletProducts = baseData.data; + productListBeans.clear(); if (appletProducts.length > 0) - productListBeans = appletProducts[0].productList; + productListBeans.addAll(appletProducts[0].productList); }); } } @@ -133,7 +151,8 @@ class _StoreOrderListPage extends State { onTap: () { setState(() { isSelected = index; - productListBeans = findMiNiGroupList.productList; + productListBeans.clear(); + productListBeans.addAll(findMiNiGroupList.productList); }); }, child: Container(