diff --git a/lib/home/home_page.dart b/lib/home/home_page.dart index 1a80baea..c1c7533a 100644 --- a/lib/home/home_page.dart +++ b/lib/home/home_page.dart @@ -25,6 +25,7 @@ import 'package:huixiang/retrofit/data/coupon.dart'; import 'package:huixiang/retrofit/data/founder.dart'; import 'package:huixiang/retrofit/data/goods.dart'; import 'package:huixiang/retrofit/data/goods_category.dart'; +import 'package:huixiang/retrofit/data/home_rank.dart'; import 'package:huixiang/retrofit/data/login_info.dart'; import 'package:huixiang/retrofit/data/msg_stats.dart'; import 'package:huixiang/retrofit/data/page.dart'; @@ -146,6 +147,7 @@ class HomePageState extends State with AutomaticKeepAliveClientMixin { int totalMsg = 0; List coupons = []; int state = 1; + HomeRank homeRank; queryHome() async { // EasyLoading.show(status: S.of(context).zhengzaijiazai); @@ -180,6 +182,11 @@ class HomePageState extends State with AutomaticKeepAliveClientMixin { articles.addAll(article.data.list); } + final BaseData rank = await apiService.recommendRank().catchError((onError) {}); + if (rank != null && rank.isSuccess) { + homeRank = rank.data; + } + final BaseData> goodsData = await apiService.creditGoods({ "orderDesc": true, "orderType": 1, @@ -510,13 +517,13 @@ class HomePageState extends State with AutomaticKeepAliveClientMixin { DiscountZone(coupons), ///特惠专区-推荐商品展示 - HomeRecommendGoods(), + HomeRecommendGoods(homeRank), ///福利中心 WelfareCore(), ///吃喝玩商品热销榜 - TopSellingList(), + TopSellingList(homeRank), // ///店铺推荐 // QuickOrder(), diff --git a/lib/home/home_view/discount_zone.dart b/lib/home/home_view/discount_zone.dart index 0778d1b2..24c0df28 100644 --- a/lib/home/home_view/discount_zone.dart +++ b/lib/home/home_view/discount_zone.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/retrofit/data/coupon.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; +import 'package:huixiang/utils/flutter_utils.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:huixiang/view_widget/classic_header.dart'; @@ -74,7 +75,7 @@ class _DiscountZone extends State { Widget discountItem(Coupon coupon) { return Container( - width: 270.w, + width: 290.w, height: 100.h, decoration: BoxDecoration( image: DecorationImage( @@ -82,7 +83,7 @@ class _DiscountZone extends State { image: AssetImage("assets/image/discount.webp"), ), ), - margin: EdgeInsets.only(right: 6.w), + margin: EdgeInsets.only(right: 10.w), child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, @@ -140,6 +141,7 @@ class _DiscountZone extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded(child: Container( + padding: EdgeInsets.only(right: 5), child:discountWidget(coupon), )), ], @@ -174,8 +176,7 @@ class _DiscountZone extends State { ), Text( coupon != null - ? double.tryParse("${coupon.discountAmount}" ?? "0") - .toInt() + ? double.tryParse("${coupon.discountAmount}" ?? "0").toInt() .toString() : "", style: TextStyle( @@ -274,7 +275,7 @@ class _DiscountZone extends State { ), Text( coupon != null - ? double.tryParse("${coupon.limitAmount}" ?? "0").toStringAsFixed(2) + ? "${AppUtils.calculateDouble(double.tryParse(coupon.limitAmount) ?? 0)}" : "", style: TextStyle( fontSize: 28.sp, @@ -303,7 +304,7 @@ class _DiscountZone extends State { : "", style: TextStyle( fontSize: 30.sp, - fontWeight: MyFontWeight.semi_bold, + fontWeight: FontWeight.w900, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xFFFFFFFF), ), ), diff --git a/lib/home/home_view/home_recommend_goods.dart b/lib/home/home_view/home_recommend_goods.dart index 191a53a9..6e7e7f32 100644 --- a/lib/home/home_view/home_recommend_goods.dart +++ b/lib/home/home_view/home_recommend_goods.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_swiper/flutter_swiper.dart'; import 'package:huixiang/retrofit/data/banner.dart'; +import 'package:huixiang/retrofit/data/home_rank.dart'; import 'package:huixiang/retrofit/data/shopping_home_config.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/view_widget/custom_image.dart'; @@ -11,6 +12,11 @@ import 'package:huixiang/utils/font_weight.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; class HomeRecommendGoods extends StatefulWidget { + // final List commodityZone; + final HomeRank homeRank; + + HomeRecommendGoods(this.homeRank); + @override State createState() { return _HomeRecommendGoods(); @@ -37,18 +43,28 @@ class _HomeRecommendGoods extends State { Container( height: 257.h, decoration: BoxDecoration( - borderRadius: BorderRadius.circular(6), + borderRadius: BorderRadius.circular(6), color: Colors.white, - ), - margin: EdgeInsets.only(left: 14.w,right: 14.w,top: 14.h,bottom: 24.h), + ), + margin: EdgeInsets.only( + left: 14.w, right: 14.w, top: 14.h, bottom: 24.h), child: ListView.builder( scrollDirection: Axis.horizontal, physics: BouncingScrollPhysics(), - itemCount:3, + itemCount: widget.homeRank?.commodityZone?.length ?? 0, itemBuilder: (context, position) { return GestureDetector( - onTap: () {}, - child: recommendGoodsItem(), + onTap: () { + Navigator.of(context).pushNamed( + '/router/store_order', + arguments: { + "id": widget.homeRank.commodityZone[position].storeId, + "tenant": widget.homeRank.commodityZone[position].tenantCode, + "storeName": "" + }, + ); + }, + child: recommendGoodsItem(widget.homeRank?.commodityZone[position]), ); }, ), @@ -58,10 +74,10 @@ class _HomeRecommendGoods extends State { ); } - Widget recommendGoodsItem() { + Widget recommendGoodsItem(CommodityZone commodityZone) { return Container( width: 158.w, - margin: EdgeInsets.only(right:7.w,left:12.w,top: 12.h), + margin: EdgeInsets.only(right: 7.w, left: 12.w, top: 12.h), child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, @@ -72,44 +88,23 @@ class _HomeRecommendGoods extends State { decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), ), - child: - ClipRRect( - borderRadius: BorderRadius.circular(4), - child: Image.asset( - "assets/image/icon_story_td.webp", - width: 158.w, - height: 158, - fit: BoxFit.cover, - ), - ),), - Container( - width: 81.w, - height: 27.h, - alignment: Alignment.center, - decoration: BoxDecoration( - borderRadius: BorderRadius.only( - topLeft: Radius.circular(4), - bottomLeft: Radius.circular(0), - bottomRight: Radius.circular(100), - topRight: Radius.circular(100),), - color: Color(0xFF32A060), - ), - child: Text( - "直降¥120.00", - style: TextStyle( - fontWeight: MyFontWeight.regular, - color: Color(0xFFFFFFFF), - fontSize: 12.sp, - ), + child: MImage( + commodityZone?.productImg ?? "", + fit: BoxFit.contain, + radius: BorderRadius.circular(4), + width: 158, + height: 158, + errorSrc: "assets/image/default_2_1.webp", + fadeSrc: "assets/image/default_2_1.webp", ), ), ], ), SizedBox( - height:8.h, + height: 8.h, ), Text( - "花生吐司", + commodityZone?.productName ?? "", maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle( @@ -117,14 +112,15 @@ class _HomeRecommendGoods extends State { fontWeight: MyFontWeight.regular, color: Color(0xFF0D0D0D), ), - ),SizedBox( - height:4.h, + ), + SizedBox( + height: 4.h, ), Text.rich( TextSpan( children: [ TextSpan( - text: "¥123.00", + text: commodityZone?.price ?? "", style: TextStyle( fontSize: 16.sp, fontWeight: MyFontWeight.semi_bold, @@ -132,9 +128,9 @@ class _HomeRecommendGoods extends State { ), ), TextSpan( - text: "¥123.00", + text: commodityZone?.applyPrice ?? "", style: TextStyle( - fontSize:10.sp, + fontSize: 10.sp, decoration: TextDecoration.lineThrough, fontWeight: MyFontWeight.regular, color: Color(0xFFB3B3B3), diff --git a/lib/home/home_view/top_selling_list.dart b/lib/home/home_view/top_selling_list.dart index 5790ccc9..9a96d0e2 100644 --- a/lib/home/home_view/top_selling_list.dart +++ b/lib/home/home_view/top_selling_list.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_swiper/flutter_swiper.dart'; import 'package:huixiang/retrofit/data/banner.dart'; +import 'package:huixiang/retrofit/data/home_rank.dart'; import 'package:huixiang/retrofit/data/shopping_home_config.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/view_widget/custom_image.dart'; @@ -11,6 +12,8 @@ import 'package:huixiang/utils/font_weight.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; class TopSellingList extends StatefulWidget { + final HomeRank homeRank; + TopSellingList(this.homeRank); @override State createState() { return _TopSellingList(); @@ -34,8 +37,10 @@ class _TopSellingList extends State { decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), image: DecorationImage( - fit: BoxFit.fill, - image: AssetImage("assets/image/hot_list.webp"), + image: NetworkImage( + widget?.homeRank?.commodityListImg ?? "" + ), + fit: BoxFit.cover, ), ), margin: EdgeInsets.only(left: 14.w,right: 14.w,top: 12.h,bottom: 23.h), @@ -63,11 +68,12 @@ class _TopSellingList extends State { child: ListView.builder( scrollDirection: Axis.horizontal, physics: BouncingScrollPhysics(), - itemCount:3, + itemCount:widget.homeRank.commodityList.length ?? 0, itemBuilder: (context, position) { return GestureDetector( - onTap: () {}, - child: hotSaleItem(), + onTap: () { + }, + child: hotSaleItem(widget.homeRank.commodityList[position],position), ); }, ), @@ -77,7 +83,7 @@ class _TopSellingList extends State { ); } - Widget hotSaleItem() { + Widget hotSaleItem(CommodityList commodityList,index) { return Container( width: 290.w, decoration: BoxDecoration( @@ -91,7 +97,7 @@ class _TopSellingList extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - "好喝榜", + commodityList?.typeName ?? "", style: TextStyle( fontSize: 14.sp, fontWeight: MyFontWeight.bold, @@ -102,15 +108,23 @@ class _TopSellingList extends State { ), Expanded(child: ListView.builder( padding: EdgeInsets.zero, - itemCount:6, + itemCount:widget.homeRank.commodityList[index].goodList.length>3?3:widget.homeRank.commodityList[index].goodList.length, scrollDirection: Axis.vertical, shrinkWrap: true, physics: BouncingScrollPhysics(), itemBuilder: (context, position) { return GestureDetector( onTap: () { + Navigator.of(context).pushNamed( + '/router/store_order', + arguments: { + "id": widget.homeRank.commodityList[index].goodList[position].storeId, + "tenant": widget.homeRank.commodityList[index].goodList[position].tenantCode, + "storeName": "" + }, + ); }, - child: rankingItem(), + child: rankingItem(widget.homeRank.commodityList[index].goodList[position],position), ); }, ),) @@ -119,7 +133,7 @@ class _TopSellingList extends State { ); } - Widget rankingItem() { + Widget rankingItem(GoodList goodList,index) { return Container( margin: EdgeInsets.only(right:14.w,top: 12.h,bottom: 12.h), child: Row( @@ -128,14 +142,18 @@ class _TopSellingList extends State { children: [ Stack( children: [ - Image.asset( - "assets/image/icon_story_td.webp", - width: 54.w, - height: 54, + MImage( + goodList.productImg ?? "", fit: BoxFit.cover, - ), Image.asset( - "assets/image/ranking1.webp", - width: 25.w, + radius: BorderRadius.circular(4), + width: 54, + height: 54, + errorSrc: "assets/image/default_2_1.webp", + fadeSrc: "assets/image/default_2_1.webp", + ), + Image.asset( + index == 0 ? "assets/image/ranking1.webp" :(index == 1 ? "assets/image/ranking2.webp": "assets/image/ranking3.webp"), + width: 25, height: 25, fit: BoxFit.cover, ), @@ -151,7 +169,7 @@ class _TopSellingList extends State { children: [ Padding(padding:EdgeInsets.only(top: 5.h,bottom: 8.h), child: Text( - "暴打柠檬茶", + goodList?.productName ?? "", style: TextStyle( fontSize: 13.sp, fontWeight: MyFontWeight.regular, @@ -162,7 +180,7 @@ class _TopSellingList extends State { TextSpan( children: [ TextSpan( - text: "¥22.00", + text: goodList?.price ?? "", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.semi_bold, @@ -170,7 +188,7 @@ class _TopSellingList extends State { ), ), TextSpan( - text: "¥22.00", + text: goodList?.applyPrice ?? "", style: TextStyle( fontSize:10.sp, decoration: TextDecoration.lineThrough, diff --git a/lib/home/points_mall_view/points_goods_title.dart b/lib/home/points_mall_view/points_goods_title.dart index 22009eba..f1c57b3e 100644 --- a/lib/home/points_mall_view/points_goods_title.dart +++ b/lib/home/points_mall_view/points_goods_title.dart @@ -48,7 +48,7 @@ class _PointsGoodsTitle extends State { // ), ItemTitle( text: S.of(context).jifenshangcheng, - imgPath: "assets/image/icon_points_mall.webp", + // imgPath: "assets/image/icon_points_mall.webp", moreText: _itemText, moreType: 1, items: sortString diff --git a/lib/home/points_mall_view/points_goods_view.dart b/lib/home/points_mall_view/points_goods_view.dart index 2095b564..dce3faf7 100644 --- a/lib/home/points_mall_view/points_goods_view.dart +++ b/lib/home/points_mall_view/points_goods_view.dart @@ -25,9 +25,9 @@ class _PointGoods extends State { if(goods?.onePrice!=null && goods?.onePrice!="0"){ return S.of(context).jifen_(goods?.onePrice); }else if((goods?.onePrice == null || goods?.onePrice == "0") && ((goods?.price != null && goods?.price != "0") || (goods?.money != null && goods?.money != "0.00"))){ - return (goods?.price== "0"|| goods?.price == null ? "" : S.of(context).jifen_(goods?.price)) + (goods?.money== "0"|| goods?.money == null ? "" : " + ${goods?.money}元"); + return (goods?.price== "0"|| goods?.price == null ? "" : S.of(context).jifen_(goods?.price)) + (goods?.money== "0"|| goods?.money == null ? "" : " + ${AppUtils.calculateDouble(double.tryParse(goods?.money) ?? 0)}元"); }else if(goods.oneMoney != null && goods.oneMoney != "0.00"){ - return "${goods.oneMoney}元"; + return "${AppUtils.calculateDouble(double.tryParse(goods.oneMoney) ?? 0)}元"; } } @@ -52,7 +52,7 @@ class _PointGoods extends State { mainAxisSpacing: 16.w, //子Widget宽高比例 0.59 childAspectRatio: - 200 / (295 / 2 + (295 / 2) * AppUtils.textScale(context)), + 200 / (305 / 2 + (305 / 2) * AppUtils.textScale(context)), ), itemBuilder: (context, index) { return GestureDetector( @@ -127,32 +127,34 @@ class _PointGoods extends State { children: [ Text( pointPrice(goods), + overflow: TextOverflow.ellipsis, + maxLines: 2, style: TextStyle( color: Color(0xFFE5600D), fontSize: 15.sp, fontWeight: MyFontWeight.semi_bold, ), ), - Row( - children: [ - Image.asset( - "assets/image/green_leaf.webp", - fit: BoxFit.cover, - width: 12, - height: 12, - ), - Text( - "x100", - overflow: TextOverflow.ellipsis, - maxLines: 2, - style: TextStyle( - color: Color(0xFF32A060), - fontWeight: MyFontWeight.semi_bold, - fontSize: 15.sp, - ), - ), - ], - ), + // Row( + // children: [ + // Image.asset( + // "assets/image/green_leaf.webp", + // fit: BoxFit.cover, + // width: 12, + // height: 12, + // ), + // Text( + // "x100", + // overflow: TextOverflow.ellipsis, + // maxLines: 2, + // style: TextStyle( + // color: Color(0xFF32A060), + // fontWeight: MyFontWeight.semi_bold, + // fontSize: 15.sp, + // ), + // ), + // ], + // ), ], ), // Row( diff --git a/lib/home/welfare_exchange.dart b/lib/home/welfare_exchange.dart index 00329630..e6377c49 100644 --- a/lib/home/welfare_exchange.dart +++ b/lib/home/welfare_exchange.dart @@ -426,7 +426,7 @@ class _WelfareExchange extends State { mainAxisSpacing: 16.w, //子Widget宽高比例 0.59 childAspectRatio: - 200 / (261 / 2 + (261 / 2) * AppUtils.textScale(context)), + 200 / (285 / 2 + (285 / 2) * AppUtils.textScale(context)), ), itemBuilder: (context, index) { return GestureDetector( @@ -505,6 +505,8 @@ class _WelfareExchange extends State { Spacer(), Text( pointPrice(goods), + overflow: TextOverflow.ellipsis, + maxLines: 2, style: TextStyle( color: Color(0xFFE5600D), fontSize: 16.sp, @@ -529,10 +531,11 @@ class _WelfareExchange extends State { if(goods?.onePrice!=null && goods?.onePrice!="0"){ return S.of(context).jifen_(goods?.onePrice); }else if((goods?.onePrice == null || goods?.onePrice == "0") && ((goods?.price != null && goods?.price != "0") || (goods?.money != null && goods?.money != "0.00"))){ - return (goods?.price== "0"|| goods?.price == null ? "" : S.of(context).jifen_(goods?.price)) + (goods?.money== "0"|| goods?.money == null ? "" : " + ${goods?.money}元"); + return (goods?.price== "0"|| goods?.price == null ? "" : S.of(context).jifen_(goods?.price)) + (goods?.money== "0"|| goods?.money == null ? "" : " + ${AppUtils.calculateDouble(double.tryParse(goods?.money) ?? 0)}元"); }else if(goods.oneMoney != null && goods.oneMoney != "0.00"){ - return "${goods.oneMoney}元"; + return "${AppUtils.calculateDouble(double.tryParse(goods.oneMoney) ?? 0)}元"; } } + } diff --git a/lib/home/welfare_page.dart b/lib/home/welfare_page.dart index 436462de..1335656a 100644 --- a/lib/home/welfare_page.dart +++ b/lib/home/welfare_page.dart @@ -41,6 +41,8 @@ class _WelfarePage extends State { bool orderDesc = true; int orderType = 1; int type = 1; + // int index = 0; + @override void initState() { @@ -372,8 +374,8 @@ class _WelfarePage extends State { ), )), Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, + // mainAxisAlignment: MainAxisAlignment.center, + // crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded(child: Container( child:weekWidget(cop), @@ -523,7 +525,7 @@ class _WelfarePage extends State { ), Text( coupon != null - ? double.tryParse("${cop.limitAmount}" ?? "0").toStringAsFixed(2) + ? "${AppUtils.calculateDouble(double.tryParse(cop.limitAmount) ?? 0)}" : "", style: TextStyle( fontSize: 24.sp, @@ -601,7 +603,7 @@ class _WelfarePage extends State { ), ), ); - if(cop.status == 1) + if(cop.status == 1 || cop.status == 2) return Align( alignment: Alignment.centerRight, child: InkWell( @@ -874,9 +876,9 @@ class _WelfarePage extends State { if(goodsPrice?.onePrice!=null && goodsPrice?.onePrice!="0"){ return S.of(context).jifen_(goodsPrice?.onePrice); }else if((goodsPrice?.onePrice == null || goodsPrice?.onePrice == "0") && ((goodsPrice?.price != null && goodsPrice?.price != "0") || (goodsPrice?.money != null && goodsPrice?.money != "0.00"))){ - return (goodsPrice?.price== "0"|| goodsPrice?.price == null ? "" : S.of(context).jifen_(goodsPrice?.price)) + (goodsPrice?.money== "0"|| goodsPrice?.money == null ? "" : " + ${goodsPrice?.money}元"); + return (goodsPrice?.price== "0"|| goodsPrice?.price == null ? "" : S.of(context).jifen_(goodsPrice?.price)) + (goodsPrice?.money== "0"|| goodsPrice?.money == null ? "" : " + ${AppUtils.calculateDouble(double.tryParse(goodsPrice?.money) ?? 0)}元"); }else if(goodsPrice.oneMoney != null && goodsPrice.oneMoney != "0.00"){ - return "${goodsPrice.oneMoney}元"; + return "${AppUtils.calculateDouble(double.tryParse(goodsPrice.oneMoney) ?? 0)}元"; } } diff --git a/lib/integral_store/integral_store_details_page.dart b/lib/integral_store/integral_store_details_page.dart index 18f2d6dc..e722f7b7 100644 --- a/lib/integral_store/integral_store_details_page.dart +++ b/lib/integral_store/integral_store_details_page.dart @@ -11,6 +11,7 @@ import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/goods.dart'; import 'package:huixiang/retrofit/data/user_info.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; +import 'package:huixiang/utils/flutter_utils.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/classic_header.dart'; import 'package:huixiang/view_widget/custom_image.dart'; @@ -84,9 +85,9 @@ class _IntegralStoreDetailsPage extends State { if(goods?.onePrice!=null && goods?.onePrice!="0"){ return S.of(context).jifen_(goods?.onePrice); }else if((goods?.onePrice == null || goods?.onePrice == "0") && ((goods?.price != null && goods?.price != "0") || (goods?.money != null && goods?.money != "0.00"))){ - return (goods?.price== "0"|| goods?.price == null ? "" : S.of(context).jifen_(goods?.price)) + (goods?.money== "0"|| goods?.money == null ? "" : " + ${goods?.money}元"); + return (goods?.price== "0"|| goods?.price == null ? "" : S.of(context).jifen_(goods?.price)) + (goods?.money== "0"|| goods?.money == null ? "" : " + ${AppUtils.calculateDouble(double.tryParse(goods?.money) ?? 0)}元"); }else if(goods.oneMoney != null && goods.oneMoney != "0.00"){ - return "${goods.oneMoney}元"; + return "${AppUtils.calculateDouble(double.tryParse(goods?.oneMoney) ?? 0)}元"; } } diff --git a/lib/mine/mine_page.dart b/lib/mine/mine_page.dart index 4ee6bcc9..21a52263 100644 --- a/lib/mine/mine_page.dart +++ b/lib/mine/mine_page.dart @@ -18,7 +18,6 @@ import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/classic_header.dart'; import 'package:huixiang/view_widget/login_tips_dialog.dart'; import 'package:huixiang/view_widget/mine_vip_entry.dart'; -import 'package:huixiang/view_widget/mine_vip_view.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:dio/dio.dart'; @@ -26,7 +25,6 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'mine_view/mine_item.dart'; import 'mine_view/mine_view.dart'; -import 'mine_view/wallet_coupon_view.dart'; class MinePage extends StatefulWidget { @@ -247,7 +245,7 @@ class MinePageState extends State with AutomaticKeepAliveClientMixin { ), ), Container( - margin: EdgeInsets.only(top: 255), + margin: EdgeInsets.only(top: 265), child: Column( children: [ ///我的订单 diff --git a/lib/mine/mine_view/mine_item.dart b/lib/mine/mine_view/mine_item.dart index f82b75de..9df96ca2 100644 --- a/lib/mine/mine_view/mine_item.dart +++ b/lib/mine/mine_view/mine_item.dart @@ -122,7 +122,7 @@ class _MineItem extends State { // "assets/image/icon_location_address.webp", // ), // ),), - // ///联系客服 + // /// // Expanded(child: InkWell( // onTap: () { // showCallMobile(); @@ -394,9 +394,9 @@ class _MineItem extends State { title: Text(S.of(context).bodadianhua), actions: [ CupertinoActionSheetAction( - child: Text("15392949097"), + child: Text("19947603193"), onPressed: () { - callMobile("15392949097"); + callMobile("19947603193"); Navigator.of(context).pop(); }, isDefaultAction: true, diff --git a/lib/retrofit/data/home_rank.dart b/lib/retrofit/data/home_rank.dart new file mode 100644 index 00000000..49f2a3c5 --- /dev/null +++ b/lib/retrofit/data/home_rank.dart @@ -0,0 +1,1080 @@ +/// CommodityList : [{"goodList":[{"productImg":"https://pos.upload.gznl.top/1175/2022/04/fc9dfd1f-c5b9-4a23-95f7-9ddcadb33410.jpg","productSkuVOList":[{"ticketStyle":"","productId":"1519870512681975808","isDelete":0,"ticketDays":"0","setMeal":"","updateUser":"1333246101196636160","skuPrice":"0.01","skuStock":10,"weight":0,"updateTime":"2022-04-29 10:45:43","ticketType":"","sort":50,"storeId":"1511585212109160448","version":0,"deliveries":0,"volume":0,"autoRenewSkuStock":0,"skuNameStr":"","createTime":"2022-04-29 10:45:43","createUser":"1333246101196636160","id":"1519870513038491648","applyPrice":"0.00","skuAttrList":[{"attrValueId":"1519870512921051136","isDelete":0,"updateUser":"1333246101196636160","updateTime":"2022-04-29 10:45:43","attrId":"1519870512837165056","createTime":"2022-04-29 10:45:43","createUser":"1333246101196636160","id":"1519870513097211904","skuId":"1519870513038491648"}],"skuCode":"P202204291045422"}],"thumbnailImg":"","productName":"原味奶茶","posShow":true,"price":"0.01","sellCount":5,"details":"","id":"1519870512681975808","applyPrice":"0.00","stock":10,"status":1,"info":""}],"typeName":"好吃榜"}] +/// CommodityZone : [{"productImg":"https://pos.upload.gznl.top/1174/2021/12/7eeee579-f536-4481-8953-12e423f7edee.jpg","productSkuVOList":[{"ticketStyle":"","productId":"1472767814229032960","isDelete":0,"ticketDays":"0","setMeal":"","updateUser":"1328618782859460608","skuPrice":"13.00","skuStock":864,"weight":0,"updateTime":"2021-12-20 11:16:24","ticketType":"","sort":50,"storeId":"1328618782985289728","version":0,"deliveries":0,"volume":0,"autoRenewSkuStock":0,"skuNameStr":"","createTime":"2021-12-20 11:16:24","createUser":"1328618782859460608","id":"1472767814275170304","applyPrice":"13.00","skuAttrList":[{"attrValueId":"1472767814262587392","isDelete":0,"updateUser":"1328618782859460608","updateTime":"2021-12-20 11:16:24","attrId":"1472767814254198784","createTime":"2021-12-20 11:16:24","createUser":"1328618782859460608","id":"1472767814287753216","skuId":"1472767814275170304"}],"skuCode":"P202112201116242"}],"thumbnailImg":"","productName":"红薯魔方吐司","posShow":true,"price":"13.00","sellCount":135,"details":"","id":"1472767814229032960","applyPrice":"13.00","stock":865,"status":1,"info":""}] +/// CommodityListImg : "https://pos.upload.gznl.top/0000/2022/06/86331f31-cae1-4096-8773-561524d71c18.png" + +class HomeRank { + HomeRank({ + List commodityList, + List commodityZone, + String commodityListImg,}){ + _commodityList = commodityList; + _commodityZone = commodityZone; + _commodityListImg = commodityListImg; +} + + HomeRank.fromJson(dynamic json) { + if (json['CommodityList'] != null) { + _commodityList = []; + json['CommodityList'].forEach((v) { + _commodityList.add(CommodityList.fromJson(v)); + }); + } + if (json['CommodityZone'] != null) { + _commodityZone = []; + json['CommodityZone'].forEach((v) { + _commodityZone.add(CommodityZone.fromJson(v)); + }); + } + _commodityListImg = json['CommodityListImg']; + } + List _commodityList; + List _commodityZone; + String _commodityListImg; +HomeRank copyWith({ List commodityList, + List commodityZone, + String commodityListImg, +}) => HomeRank( commodityList: commodityList ?? _commodityList, + commodityZone: commodityZone ?? _commodityZone, + commodityListImg: commodityListImg ?? _commodityListImg, +); + List get commodityList => _commodityList; + List get commodityZone => _commodityZone; + String get commodityListImg => _commodityListImg; + + Map toJson() { + final map = {}; + if (_commodityList != null) { + map['CommodityList'] = _commodityList.map((v) => v.toJson()).toList(); + } + if (_commodityZone != null) { + map['CommodityZone'] = _commodityZone.map((v) => v.toJson()).toList(); + } + map['CommodityListImg'] = _commodityListImg; + return map; + } + +} + +/// productImg : "https://pos.upload.gznl.top/1174/2021/12/7eeee579-f536-4481-8953-12e423f7edee.jpg" +/// productSkuVOList : [{"ticketStyle":"","productId":"1472767814229032960","isDelete":0,"ticketDays":"0","setMeal":"","updateUser":"1328618782859460608","skuPrice":"13.00","skuStock":864,"weight":0,"updateTime":"2021-12-20 11:16:24","ticketType":"","sort":50,"storeId":"1328618782985289728","version":0,"deliveries":0,"volume":0,"autoRenewSkuStock":0,"skuNameStr":"","createTime":"2021-12-20 11:16:24","createUser":"1328618782859460608","id":"1472767814275170304","applyPrice":"13.00","skuAttrList":[{"attrValueId":"1472767814262587392","isDelete":0,"updateUser":"1328618782859460608","updateTime":"2021-12-20 11:16:24","attrId":"1472767814254198784","createTime":"2021-12-20 11:16:24","createUser":"1328618782859460608","id":"1472767814287753216","skuId":"1472767814275170304"}],"skuCode":"P202112201116242"}] +/// thumbnailImg : "" +/// productName : "红薯魔方吐司" +/// posShow : true +/// price : "13.00" +/// sellCount : 135 +/// details : "" +/// id : "1472767814229032960" +/// applyPrice : "13.00" +/// stock : 865 +/// status : 1 +/// info : "" + +class CommodityZone { + CommodityZone({ + String productImg, + List productSkuVOList, + String thumbnailImg, + String tenantCode, + String storeId, + String productName, + bool posShow, + String price, + int sellCount, + String details, + String id, + String applyPrice, + int stock, + int status, + String info,}){ + _productImg = productImg; + _productSkuVOList = productSkuVOList; + _thumbnailImg = thumbnailImg; + _tenantCode = tenantCode; + _storeId = storeId; + _productName = productName; + _posShow = posShow; + _price = price; + _sellCount = sellCount; + _details = details; + _id = id; + _applyPrice = applyPrice; + _stock = stock; + _status = status; + _info = info; +} + + CommodityZone.fromJson(dynamic json) { + _productImg = json['productImg']; + if (json['productSkuVOList'] != null) { + _productSkuVOList = []; + json['productSkuVOList'].forEach((v) { + _productSkuVOList.add(ProductSkuVoList.fromJson(v)); + }); + } + _thumbnailImg = json['thumbnailImg']; + _tenantCode = json['tenantCode']; + _storeId = json['storeId']; + _productName = json['productName']; + _posShow = json['posShow']; + _price = json['price']; + _sellCount = json['sellCount']; + _details = json['details']; + _id = json['id']; + _applyPrice = json['applyPrice']; + _stock = json['stock']; + _status = json['status']; + _info = json['info']; + } + String _productImg; + List _productSkuVOList; + String _thumbnailImg; + String _tenantCode; + String _storeId; + String _productName; + bool _posShow; + String _price; + int _sellCount; + String _details; + String _id; + String _applyPrice; + int _stock; + int _status; + String _info; +CommodityZone copyWith({ String productImg, + List productSkuVOList, + String thumbnailImg, + String tenantCode, + String storeId, + String productName, + bool posShow, + String price, + int sellCount, + String details, + String id, + String applyPrice, + int stock, + int status, + String info, +}) => CommodityZone( productImg: productImg ?? _productImg, + productSkuVOList: productSkuVOList ?? _productSkuVOList, + thumbnailImg: thumbnailImg ?? _thumbnailImg, + tenantCode: tenantCode ?? _tenantCode, + storeId: storeId ?? _storeId, + productName: productName ?? _productName, + posShow: posShow ?? _posShow, + price: price ?? _price, + sellCount: sellCount ?? _sellCount, + details: details ?? _details, + id: id ?? _id, + applyPrice: applyPrice ?? _applyPrice, + stock: stock ?? _stock, + status: status ?? _status, + info: info ?? _info, +); + String get productImg => _productImg; + List get productSkuVOList => _productSkuVOList; + String get thumbnailImg => _thumbnailImg; + String get tenantCode => _tenantCode; + String get storeId => _storeId; + String get productName => _productName; + bool get posShow => _posShow; + String get price => _price; + int get sellCount => _sellCount; + String get details => _details; + String get id => _id; + String get applyPrice => _applyPrice; + int get stock => _stock; + int get status => _status; + String get info => _info; + + Map toJson() { + final map = {}; + map['productImg'] = _productImg; + if (_productSkuVOList != null) { + map['productSkuVOList'] = _productSkuVOList.map((v) => v.toJson()).toList(); + } + map['thumbnailImg'] = _thumbnailImg; + map['tenantCode'] = _tenantCode; + map['storeId'] = _storeId; + map['productName'] = _productName; + map['posShow'] = _posShow; + map['price'] = _price; + map['sellCount'] = _sellCount; + map['details'] = _details; + map['id'] = _id; + map['applyPrice'] = _applyPrice; + map['stock'] = _stock; + map['status'] = _status; + map['info'] = _info; + return map; + } + +} + +/// ticketStyle : "" +/// productId : "1472767814229032960" +/// isDelete : 0 +/// ticketDays : "0" +/// setMeal : "" +/// updateUser : "1328618782859460608" +/// skuPrice : "13.00" +/// skuStock : 864 +/// weight : 0 +/// updateTime : "2021-12-20 11:16:24" +/// ticketType : "" +/// sort : 50 +/// storeId : "1328618782985289728" +/// version : 0 +/// deliveries : 0 +/// volume : 0 +/// autoRenewSkuStock : 0 +/// skuNameStr : "" +/// createTime : "2021-12-20 11:16:24" +/// createUser : "1328618782859460608" +/// id : "1472767814275170304" +/// applyPrice : "13.00" +/// skuAttrList : [{"attrValueId":"1472767814262587392","isDelete":0,"updateUser":"1328618782859460608","updateTime":"2021-12-20 11:16:24","attrId":"1472767814254198784","createTime":"2021-12-20 11:16:24","createUser":"1328618782859460608","id":"1472767814287753216","skuId":"1472767814275170304"}] +/// skuCode : "P202112201116242" + +class ProductSkuVoList { + ProductSkuVoList({ + String ticketStyle, + String productId, + int isDelete, + String ticketDays, + String setMeal, + String updateUser, + String skuPrice, + int skuStock, + int weight, + String updateTime, + String ticketType, + int sort, + int version, + int deliveries, + int volume, + int autoRenewSkuStock, + String skuNameStr, + String createTime, + String createUser, + String id, + String applyPrice, + List skuAttrList, + String skuCode,}){ + _ticketStyle = ticketStyle; + _productId = productId; + _isDelete = isDelete; + _ticketDays = ticketDays; + _setMeal = setMeal; + _updateUser = updateUser; + _skuPrice = skuPrice; + _skuStock = skuStock; + _weight = weight; + _updateTime = updateTime; + _ticketType = ticketType; + _sort = sort; + // _storeIds = storeIds; + _version = version; + _deliveries = deliveries; + _volume = volume; + _autoRenewSkuStock = autoRenewSkuStock; + _skuNameStr = skuNameStr; + _createTime = createTime; + _createUser = createUser; + _id = id; + _applyPrice = applyPrice; + _skuAttrList = skuAttrList; + _skuCode = skuCode; +} + + ProductSkuVoList.fromJson(dynamic json) { + _ticketStyle = json['ticketStyle']; + _productId = json['productId']; + _isDelete = json['isDelete']; + _ticketDays = json['ticketDays']; + _setMeal = json['setMeal']; + _updateUser = json['updateUser']; + _skuPrice = json['skuPrice']; + _skuStock = json['skuStock']; + _weight = json['weight']; + _updateTime = json['updateTime']; + _ticketType = json['ticketType']; + _sort = json['sort']; + // _storeIds = json['storeIds']; + _version = json['version']; + _deliveries = json['deliveries']; + _volume = json['volume']; + _autoRenewSkuStock = json['autoRenewSkuStock']; + _skuNameStr = json['skuNameStr']; + _createTime = json['createTime']; + _createUser = json['createUser']; + _id = json['id']; + _applyPrice = json['applyPrice']; + if (json['skuAttrList'] != null) { + _skuAttrList = []; + json['skuAttrList'].forEach((v) { + _skuAttrList.add(SkuAttrList.fromJson(v)); + }); + } + _skuCode = json['skuCode']; + } + String _ticketStyle; + String _productId; + int _isDelete; + String _ticketDays; + String _setMeal; + String _updateUser; + String _skuPrice; + int _skuStock; + int _weight; + String _updateTime; + String _ticketType; + int _sort; + // String _storeIds; + int _version; + int _deliveries; + int _volume; + int _autoRenewSkuStock; + String _skuNameStr; + String _createTime; + String _createUser; + String _id; + String _applyPrice; + List _skuAttrList; + String _skuCode; +ProductSkuVoList copyWith({ String ticketStyle, + String productId, + int isDelete, + String ticketDays, + String setMeal, + String updateUser, + String skuPrice, + int skuStock, + int weight, + String updateTime, + String ticketType, + int sort, + // String storeIds, + int version, + int deliveries, + int volume, + int autoRenewSkuStock, + String skuNameStr, + String createTime, + String createUser, + String id, + String applyPrice, + List skuAttrList, + String skuCode, +}) => ProductSkuVoList( ticketStyle: ticketStyle ?? _ticketStyle, + productId: productId ?? _productId, + isDelete: isDelete ?? _isDelete, + ticketDays: ticketDays ?? _ticketDays, + setMeal: setMeal ?? _setMeal, + updateUser: updateUser ?? _updateUser, + skuPrice: skuPrice ?? _skuPrice, + skuStock: skuStock ?? _skuStock, + weight: weight ?? _weight, + updateTime: updateTime ?? _updateTime, + ticketType: ticketType ?? _ticketType, + sort: sort ?? _sort, + // storeId: storeId ?? _storeIds, + version: version ?? _version, + deliveries: deliveries ?? _deliveries, + volume: volume ?? _volume, + autoRenewSkuStock: autoRenewSkuStock ?? _autoRenewSkuStock, + skuNameStr: skuNameStr ?? _skuNameStr, + createTime: createTime ?? _createTime, + createUser: createUser ?? _createUser, + id: id ?? _id, + applyPrice: applyPrice ?? _applyPrice, + skuAttrList: skuAttrList ?? _skuAttrList, + skuCode: skuCode ?? _skuCode, +); + String get ticketStyle => _ticketStyle; + String get productId => _productId; + int get isDelete => _isDelete; + String get ticketDays => _ticketDays; + String get setMeal => _setMeal; + String get updateUser => _updateUser; + String get skuPrice => _skuPrice; + int get skuStock => _skuStock; + int get weight => _weight; + String get updateTime => _updateTime; + String get ticketType => _ticketType; + int get sort => _sort; + // String get storeIds => _storeIds; + int get version => _version; + int get deliveries => _deliveries; + int get volume => _volume; + int get autoRenewSkuStock => _autoRenewSkuStock; + String get skuNameStr => _skuNameStr; + String get createTime => _createTime; + String get createUser => _createUser; + String get id => _id; + String get applyPrice => _applyPrice; + List get skuAttrList => _skuAttrList; + String get skuCode => _skuCode; + + Map toJson() { + final map = {}; + map['ticketStyle'] = _ticketStyle; + map['productId'] = _productId; + map['isDelete'] = _isDelete; + map['ticketDays'] = _ticketDays; + map['setMeal'] = _setMeal; + map['updateUser'] = _updateUser; + map['skuPrice'] = _skuPrice; + map['skuStock'] = _skuStock; + map['weight'] = _weight; + map['updateTime'] = _updateTime; + map['ticketType'] = _ticketType; + map['sort'] = _sort; + // map['storeIds'] = _storeIds; + map['version'] = _version; + map['deliveries'] = _deliveries; + map['volume'] = _volume; + map['autoRenewSkuStock'] = _autoRenewSkuStock; + map['skuNameStr'] = _skuNameStr; + map['createTime'] = _createTime; + map['createUser'] = _createUser; + map['id'] = _id; + map['applyPrice'] = _applyPrice; + if (_skuAttrList != null) { + map['skuAttrList'] = _skuAttrList.map((v) => v.toJson()).toList(); + } + map['skuCode'] = _skuCode; + return map; + } + +} + +/// attrValueId : "1472767814262587392" +/// isDelete : 0 +/// updateUser : "1328618782859460608" +/// updateTime : "2021-12-20 11:16:24" +/// attrId : "1472767814254198784" +/// createTime : "2021-12-20 11:16:24" +/// createUser : "1328618782859460608" +/// id : "1472767814287753216" +/// skuId : "1472767814275170304" + +class SkuAttrList { + SkuAttrList({ + String attrValueId, + int isDelete, + String updateUser, + String updateTime, + String attrId, + String createTime, + String createUser, + String id, + String skuId,}){ + _attrValueId = attrValueId; + _isDelete = isDelete; + _updateUser = updateUser; + _updateTime = updateTime; + _attrId = attrId; + _createTime = createTime; + _createUser = createUser; + _id = id; + _skuId = skuId; +} + + SkuAttrList.fromJson(dynamic json) { + _attrValueId = json['attrValueId']; + _isDelete = json['isDelete']; + _updateUser = json['updateUser']; + _updateTime = json['updateTime']; + _attrId = json['attrId']; + _createTime = json['createTime']; + _createUser = json['createUser']; + _id = json['id']; + _skuId = json['skuId']; + } + String _attrValueId; + int _isDelete; + String _updateUser; + String _updateTime; + String _attrId; + String _createTime; + String _createUser; + String _id; + String _skuId; +SkuAttrList copyWith({ String attrValueId, + int isDelete, + String updateUser, + String updateTime, + String attrId, + String createTime, + String createUser, + String id, + String skuId, +}) => SkuAttrList( attrValueId: attrValueId ?? _attrValueId, + isDelete: isDelete ?? _isDelete, + updateUser: updateUser ?? _updateUser, + updateTime: updateTime ?? _updateTime, + attrId: attrId ?? _attrId, + createTime: createTime ?? _createTime, + createUser: createUser ?? _createUser, + id: id ?? _id, + skuId: skuId ?? _skuId, +); + String get attrValueId => _attrValueId; + int get isDelete => _isDelete; + String get updateUser => _updateUser; + String get updateTime => _updateTime; + String get attrId => _attrId; + String get createTime => _createTime; + String get createUser => _createUser; + String get id => _id; + String get skuId => _skuId; + + Map toJson() { + final map = {}; + map['attrValueId'] = _attrValueId; + map['isDelete'] = _isDelete; + map['updateUser'] = _updateUser; + map['updateTime'] = _updateTime; + map['attrId'] = _attrId; + map['createTime'] = _createTime; + map['createUser'] = _createUser; + map['id'] = _id; + map['skuId'] = _skuId; + return map; + } + +} + +/// goodList : [{"productImg":"https://pos.upload.gznl.top/1175/2022/04/fc9dfd1f-c5b9-4a23-95f7-9ddcadb33410.jpg","productSkuVOList":[{"ticketStyle":"","productId":"1519870512681975808","isDelete":0,"ticketDays":"0","setMeal":"","updateUser":"1333246101196636160","skuPrice":"0.01","skuStock":10,"weight":0,"updateTime":"2022-04-29 10:45:43","ticketType":"","sort":50,"storeId":"1511585212109160448","version":0,"deliveries":0,"volume":0,"autoRenewSkuStock":0,"skuNameStr":"","createTime":"2022-04-29 10:45:43","createUser":"1333246101196636160","id":"1519870513038491648","applyPrice":"0.00","skuAttrList":[{"attrValueId":"1519870512921051136","isDelete":0,"updateUser":"1333246101196636160","updateTime":"2022-04-29 10:45:43","attrId":"1519870512837165056","createTime":"2022-04-29 10:45:43","createUser":"1333246101196636160","id":"1519870513097211904","skuId":"1519870513038491648"}],"skuCode":"P202204291045422"}],"thumbnailImg":"","productName":"原味奶茶","posShow":true,"price":"0.01","sellCount":5,"details":"","id":"1519870512681975808","applyPrice":"0.00","stock":10,"status":1,"info":""}] +/// typeName : "好吃榜" + +class CommodityList { + CommodityList({ + List goodList, + String typeName,}){ + _goodList = goodList; + _typeName = typeName; +} + + CommodityList.fromJson(dynamic json) { + if (json['goodList'] != null) { + _goodList = []; + json['goodList'].forEach((v) { + _goodList.add(GoodList.fromJson(v)); + }); + } + _typeName = json['typeName']; + } + List _goodList; + String _typeName; +CommodityList copyWith({ List goodList, + String typeName, +}) => CommodityList( goodList: goodList ?? _goodList, + typeName: typeName ?? _typeName, +); + List get goodList => _goodList; + String get typeName => _typeName; + + Map toJson() { + final map = {}; + if (_goodList != null) { + map['goodList'] = _goodList.map((v) => v.toJson()).toList(); + } + map['typeName'] = _typeName; + return map; + } + +} + +/// productImg : "https://pos.upload.gznl.top/1175/2022/04/fc9dfd1f-c5b9-4a23-95f7-9ddcadb33410.jpg" +/// productSkuVOList : [{"ticketStyle":"","productId":"1519870512681975808","isDelete":0,"ticketDays":"0","setMeal":"","updateUser":"1333246101196636160","skuPrice":"0.01","skuStock":10,"weight":0,"updateTime":"2022-04-29 10:45:43","ticketType":"","sort":50,"storeId":"1511585212109160448","version":0,"deliveries":0,"volume":0,"autoRenewSkuStock":0,"skuNameStr":"","createTime":"2022-04-29 10:45:43","createUser":"1333246101196636160","id":"1519870513038491648","applyPrice":"0.00","skuAttrList":[{"attrValueId":"1519870512921051136","isDelete":0,"updateUser":"1333246101196636160","updateTime":"2022-04-29 10:45:43","attrId":"1519870512837165056","createTime":"2022-04-29 10:45:43","createUser":"1333246101196636160","id":"1519870513097211904","skuId":"1519870513038491648"}],"skuCode":"P202204291045422"}] +/// thumbnailImg : "" +/// productName : "原味奶茶" +/// posShow : true +/// price : "0.01" +/// sellCount : 5 +/// details : "" +/// id : "1519870512681975808" +/// applyPrice : "0.00" +/// stock : 10 +/// status : 1 +/// info : "" + +class GoodList { + GoodList({ + String productImg, + List goodProductSkuVOList, + String thumbnailImg, + String tenantCode, + String storeId, + String productName, + bool posShow, + String price, + int sellCount, + String details, + String id, + String applyPrice, + int stock, + int status, + String info,}){ + _productImg = productImg; + _goodProductSkuVOList = goodProductSkuVOList; + _thumbnailImg = thumbnailImg; + _tenantCode = tenantCode; + _storeId = storeId; + _productName = productName; + _posShow = posShow; + _price = price; + _sellCount = sellCount; + _details = details; + _id = id; + _applyPrice = applyPrice; + _stock = stock; + _status = status; + _info = info; +} + + GoodList.fromJson(dynamic json) { + _productImg = json['productImg']; + if (json['productSkuVOList'] != null) { + _goodProductSkuVOList = []; + json['productSkuVOList'].forEach((v) { + _goodProductSkuVOList.add(GoodProductSkuVOList.fromJson(v)); + }); + } + _thumbnailImg = json['thumbnailImg']; + _tenantCode = json['tenantCode']; + _storeId = json['storeId']; + _productName = json['productName']; + _posShow = json['posShow']; + _price = json['price']; + _sellCount = json['sellCount']; + _details = json['details']; + _id = json['id']; + _applyPrice = json['applyPrice']; + _stock = json['stock']; + _status = json['status']; + _info = json['info']; + } + String _productImg; + List _goodProductSkuVOList; + String _thumbnailImg; + String _tenantCode; + String _storeId; + String _productName; + bool _posShow; + String _price; + int _sellCount; + String _details; + String _id; + String _applyPrice; + int _stock; + int _status; + String _info; +GoodList copyWith({ String productImg, + List goodProductSkuVOList, + String thumbnailImg, + String tenantCode, + String storeId, + String productName, + bool posShow, + String price, + int sellCount, + String details, + String id, + String applyPrice, + int stock, + int status, + String info, +}) => GoodList( productImg: productImg ?? _productImg, + goodProductSkuVOList: goodProductSkuVOList ?? _goodProductSkuVOList, + thumbnailImg: thumbnailImg ?? _thumbnailImg, + tenantCode: tenantCode ?? _tenantCode, + storeId: storeId ?? _storeId, + productName: productName ?? _productName, + posShow: posShow ?? _posShow, + price: price ?? _price, + sellCount: sellCount ?? _sellCount, + details: details ?? _details, + id: id ?? _id, + applyPrice: applyPrice ?? _applyPrice, + stock: stock ?? _stock, + status: status ?? _status, + info: info ?? _info, +); + String get productImg => _productImg; + List get goodProductSkuVOList => _goodProductSkuVOList; + String get thumbnailImg => _thumbnailImg; + String get tenantCode => _tenantCode; + String get storeId => _storeId; + String get productName => _productName; + bool get posShow => _posShow; + String get price => _price; + int get sellCount => _sellCount; + String get details => _details; + String get id => _id; + String get applyPrice => _applyPrice; + int get stock => _stock; + int get status => _status; + String get info => _info; + + Map toJson() { + final map = {}; + map['productImg'] = _productImg; + if (_goodProductSkuVOList != null) { + map['goodProductSkuVOList'] = _goodProductSkuVOList.map((v) => v.toJson()).toList(); + } + map['thumbnailImg'] = _thumbnailImg; + map['tenantCode'] = _tenantCode; + map['storeId'] = _storeId; + map['productName'] = _productName; + map['posShow'] = _posShow; + map['price'] = _price; + map['sellCount'] = _sellCount; + map['details'] = _details; + map['id'] = _id; + map['applyPrice'] = _applyPrice; + map['stock'] = _stock; + map['status'] = _status; + map['info'] = _info; + return map; + } + +} + +/// ticketStyle : "" +/// productId : "1519870512681975808" +/// isDelete : 0 +/// ticketDays : "0" +/// setMeal : "" +/// updateUser : "1333246101196636160" +/// skuPrice : "0.01" +/// skuStock : 10 +/// weight : 0 +/// updateTime : "2022-04-29 10:45:43" +/// ticketType : "" +/// sort : 50 +/// storeId : "1511585212109160448" +/// version : 0 +/// deliveries : 0 +/// volume : 0 +/// autoRenewSkuStock : 0 +/// skuNameStr : "" +/// createTime : "2022-04-29 10:45:43" +/// createUser : "1333246101196636160" +/// id : "1519870513038491648" +/// applyPrice : "0.00" +/// skuAttrList : [{"attrValueId":"1519870512921051136","isDelete":0,"updateUser":"1333246101196636160","updateTime":"2022-04-29 10:45:43","attrId":"1519870512837165056","createTime":"2022-04-29 10:45:43","createUser":"1333246101196636160","id":"1519870513097211904","skuId":"1519870513038491648"}] +/// skuCode : "P202204291045422" + +class GoodProductSkuVOList { + GoodProductSkuVOList({ + String ticketStyle, + String productId, + int isDelete, + String ticketDays, + String setMeal, + String updateUser, + String skuPrice, + int skuStock, + int weight, + String updateTime, + String ticketType, + int sort, + // String storeIds, + int version, + int deliveries, + int volume, + int autoRenewSkuStock, + String skuNameStr, + String createTime, + String createUser, + String id, + String applyPrice, + List goodSkuAttrList, + String skuCode,}){ + _ticketStyle = ticketStyle; + _productId = productId; + _isDelete = isDelete; + _ticketDays = ticketDays; + _setMeal = setMeal; + _updateUser = updateUser; + _skuPrice = skuPrice; + _skuStock = skuStock; + _weight = weight; + _updateTime = updateTime; + _ticketType = ticketType; + _sort = sort; + // _storeIds = storeIds; + _version = version; + _deliveries = deliveries; + _volume = volume; + _autoRenewSkuStock = autoRenewSkuStock; + _skuNameStr = skuNameStr; + _createTime = createTime; + _createUser = createUser; + _id = id; + _applyPrice = applyPrice; + _goodSkuAttrList = goodSkuAttrList; + _skuCode = skuCode; +} + + GoodProductSkuVOList.fromJson(dynamic json) { + _ticketStyle = json['ticketStyle']; + _productId = json['productId']; + _isDelete = json['isDelete']; + _ticketDays = json['ticketDays']; + _setMeal = json['setMeal']; + _updateUser = json['updateUser']; + _skuPrice = json['skuPrice']; + _skuStock = json['skuStock']; + _weight = json['weight']; + _updateTime = json['updateTime']; + _ticketType = json['ticketType']; + _sort = json['sort']; + // _storeIds = json['storeIds']; + _version = json['version']; + _deliveries = json['deliveries']; + _volume = json['volume']; + _autoRenewSkuStock = json['autoRenewSkuStock']; + _skuNameStr = json['skuNameStr']; + _createTime = json['createTime']; + _createUser = json['createUser']; + _id = json['id']; + _applyPrice = json['applyPrice']; + if (json['goodSkuAttrList'] != null) { + _goodSkuAttrList = []; + json['goodSkuAttrList'].forEach((v) { + _goodSkuAttrList.add(GoodSkuAttrList.fromJson(v)); + }); + } + _skuCode = json['skuCode']; + } + String _ticketStyle; + String _productId; + int _isDelete; + String _ticketDays; + String _setMeal; + String _updateUser; + String _skuPrice; + int _skuStock; + int _weight; + String _updateTime; + String _ticketType; + int _sort; + // String _storeIds; + int _version; + int _deliveries; + int _volume; + int _autoRenewSkuStock; + String _skuNameStr; + String _createTime; + String _createUser; + String _id; + String _applyPrice; + List _goodSkuAttrList; + String _skuCode; +ProductSkuVoList copyWith({ String ticketStyle, + String productId, + int isDelete, + String ticketDays, + String setMeal, + String updateUser, + String skuPrice, + int skuStock, + int weight, + String updateTime, + String ticketType, + int sort, + // String storeIds, + int version, + int deliveries, + int volume, + int autoRenewSkuStock, + String skuNameStr, + String createTime, + String createUser, + String id, + String applyPrice, + List goodSkuAttrList, + String skuCode, +}) => ProductSkuVoList( ticketStyle: ticketStyle ?? _ticketStyle, + productId: productId ?? _productId, + isDelete: isDelete ?? _isDelete, + ticketDays: ticketDays ?? _ticketDays, + setMeal: setMeal ?? _setMeal, + updateUser: updateUser ?? _updateUser, + skuPrice: skuPrice ?? _skuPrice, + skuStock: skuStock ?? _skuStock, + weight: weight ?? _weight, + updateTime: updateTime ?? _updateTime, + ticketType: ticketType ?? _ticketType, + sort: sort ?? _sort, + // storeIds: storeIds ?? _storeIds, + version: version ?? _version, + deliveries: deliveries ?? _deliveries, + volume: volume ?? _volume, + autoRenewSkuStock: autoRenewSkuStock ?? _autoRenewSkuStock, + skuNameStr: skuNameStr ?? _skuNameStr, + createTime: createTime ?? _createTime, + createUser: createUser ?? _createUser, + id: id ?? _id, + applyPrice: applyPrice ?? _applyPrice, + skuAttrList: goodSkuAttrList ?? _goodSkuAttrList, + skuCode: skuCode ?? _skuCode, +); + String get ticketStyle => _ticketStyle; + String get productId => _productId; + int get isDelete => _isDelete; + String get ticketDays => _ticketDays; + String get setMeal => _setMeal; + String get updateUser => _updateUser; + String get skuPrice => _skuPrice; + int get skuStock => _skuStock; + int get weight => _weight; + String get updateTime => _updateTime; + String get ticketType => _ticketType; + int get sort => _sort; + // String get storeIds => _storeIds; + int get version => _version; + int get deliveries => _deliveries; + int get volume => _volume; + int get autoRenewSkuStock => _autoRenewSkuStock; + String get skuNameStr => _skuNameStr; + String get createTime => _createTime; + String get createUser => _createUser; + String get id => _id; + String get applyPrice => _applyPrice; + List get goodSkuAttrList => _goodSkuAttrList; + String get skuCode => _skuCode; + + Map toJson() { + final map = {}; + map['ticketStyle'] = _ticketStyle; + map['productId'] = _productId; + map['isDelete'] = _isDelete; + map['ticketDays'] = _ticketDays; + map['setMeal'] = _setMeal; + map['updateUser'] = _updateUser; + map['skuPrice'] = _skuPrice; + map['skuStock'] = _skuStock; + map['weight'] = _weight; + map['updateTime'] = _updateTime; + map['ticketType'] = _ticketType; + map['sort'] = _sort; + // map['storeIds'] = _storeIds; + map['version'] = _version; + map['deliveries'] = _deliveries; + map['volume'] = _volume; + map['autoRenewSkuStock'] = _autoRenewSkuStock; + map['skuNameStr'] = _skuNameStr; + map['createTime'] = _createTime; + map['createUser'] = _createUser; + map['id'] = _id; + map['applyPrice'] = _applyPrice; + if (_goodSkuAttrList != null) { + map['goodSkuAttrList'] = _goodSkuAttrList.map((v) => v.toJson()).toList(); + } + map['skuCode'] = _skuCode; + return map; + } + +} + +/// attrValueId : "1519870512921051136" +/// isDelete : 0 +/// updateUser : "1333246101196636160" +/// updateTime : "2022-04-29 10:45:43" +/// attrId : "1519870512837165056" +/// createTime : "2022-04-29 10:45:43" +/// createUser : "1333246101196636160" +/// id : "1519870513097211904" +/// skuId : "1519870513038491648" + +class GoodSkuAttrList { + GoodSkuAttrList({ + String attrValueId, + int isDelete, + String updateUser, + String updateTime, + String attrId, + String createTime, + String createUser, + String id, + String skuId,}){ + _attrValueId = attrValueId; + _isDelete = isDelete; + _updateUser = updateUser; + _updateTime = updateTime; + _attrId = attrId; + _createTime = createTime; + _createUser = createUser; + _id = id; + _skuId = skuId; +} + + GoodSkuAttrList.fromJson(dynamic json) { + _attrValueId = json['attrValueId']; + _isDelete = json['isDelete']; + _updateUser = json['updateUser']; + _updateTime = json['updateTime']; + _attrId = json['attrId']; + _createTime = json['createTime']; + _createUser = json['createUser']; + _id = json['id']; + _skuId = json['skuId']; + } + String _attrValueId; + int _isDelete; + String _updateUser; + String _updateTime; + String _attrId; + String _createTime; + String _createUser; + String _id; + String _skuId; + SkuAttrList copyWith({ String attrValueId, + int isDelete, + String updateUser, + String updateTime, + String attrId, + String createTime, + String createUser, + String id, + String skuId, +}) => SkuAttrList( attrValueId: attrValueId ?? _attrValueId, + isDelete: isDelete ?? _isDelete, + updateUser: updateUser ?? _updateUser, + updateTime: updateTime ?? _updateTime, + attrId: attrId ?? _attrId, + createTime: createTime ?? _createTime, + createUser: createUser ?? _createUser, + id: id ?? _id, + skuId: skuId ?? _skuId, +); + String get attrValueId => _attrValueId; + int get isDelete => _isDelete; + String get updateUser => _updateUser; + String get updateTime => _updateTime; + String get attrId => _attrId; + String get createTime => _createTime; + String get createUser => _createUser; + String get id => _id; + String get skuId => _skuId; + + Map toJson() { + final map = {}; + map['attrValueId'] = _attrValueId; + map['isDelete'] = _isDelete; + map['updateUser'] = _updateUser; + map['updateTime'] = _updateTime; + map['attrId'] = _attrId; + map['createTime'] = _createTime; + map['createUser'] = _createUser; + map['id'] = _id; + map['skuId'] = _skuId; + return map; + } + +} \ No newline at end of file diff --git a/lib/retrofit/retrofit_api.dart b/lib/retrofit/retrofit_api.dart index d05b7563..f2fd3a6b 100644 --- a/lib/retrofit/retrofit_api.dart +++ b/lib/retrofit/retrofit_api.dart @@ -36,6 +36,7 @@ import 'data/goods.dart'; import 'data/goods_category.dart'; import 'data/headlines_list.dart'; import 'data/headlines_list_details.dart'; +import 'data/home_rank.dart'; import 'data/invitation_list.dart'; import 'data/logistics.dart'; import 'data/member_Infor.dart'; @@ -523,4 +524,8 @@ abstract class ApiService { @GET("/home/version") Future> appVersion(); + ///App推荐排行 + @GET("/home/recommendRank") + Future> recommendRank(); + } diff --git a/lib/retrofit/retrofit_api.g.dart b/lib/retrofit/retrofit_api.g.dart index 07036975..2c45bf97 100644 --- a/lib/retrofit/retrofit_api.g.dart +++ b/lib/retrofit/retrofit_api.g.dart @@ -1981,4 +1981,25 @@ class _ApiService implements ApiService { ); return value; } + + @override + Future> recommendRank() async { + const _extra = {}; + final queryParameters = {}; + final _data = {}; + final _result = await _dio.request>( + '/home/recommendRank', + queryParameters: queryParameters, + options: RequestOptions( + method: 'GET', + headers: {}, + extra: _extra, + baseUrl: baseUrl), + data: _data); + final value = BaseData.fromJson( + _result.data, + (json) => HomeRank.fromJson(json), + ); + return value; + } } diff --git a/lib/settlement/settlement_view/coupon.dart b/lib/settlement/settlement_view/coupon.dart index a3b725b7..b9e31079 100644 --- a/lib/settlement/settlement_view/coupon.dart +++ b/lib/settlement/settlement_view/coupon.dart @@ -3,6 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/retrofit/data/settleOrderInfo.dart'; import 'package:huixiang/retrofit/data/store_info.dart'; +import 'package:huixiang/utils/flutter_utils.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/separator.dart'; @@ -294,9 +295,7 @@ class _CouponWidget extends State { ), Text( widget.couponList != null - ? double.tryParse("${widget.couponList.discountAmount}" ?? "0") - .toInt() - .toString() + ? "${AppUtils.calculateDouble(double.tryParse(widget.couponList.discountAmount) ?? 0)}" : "", style: TextStyle( fontSize: 30.sp, @@ -394,7 +393,7 @@ class _CouponWidget extends State { ), Text( widget.couponList != null - ? double.tryParse("${widget.couponList.limitAmount}" ?? "0").toStringAsFixed(2) + ? "${AppUtils.calculateDouble(double.tryParse(widget.couponList.limitAmount) ?? 0)}" : "", style: TextStyle( fontSize: 28.sp, diff --git a/lib/store/store_order.dart b/lib/store/store_order.dart index 11112dfc..58cfad09 100644 --- a/lib/store/store_order.dart +++ b/lib/store/store_order.dart @@ -438,7 +438,7 @@ class _StoreOrderPage extends State ), // if(count() != 0) Positioned( - bottom: 0, + bottom: 30, left: 0, right: 0, child: Stack( diff --git a/lib/view_widget/coupon_details_dialog.dart b/lib/view_widget/coupon_details_dialog.dart index e9e55f38..2ef4c28e 100644 --- a/lib/view_widget/coupon_details_dialog.dart +++ b/lib/view_widget/coupon_details_dialog.dart @@ -26,7 +26,7 @@ class _CouponDetailsWidget extends State { Widget build(BuildContext context) { return Container( width: double.infinity, - height:291.h, + height:355.h, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.only( @@ -34,7 +34,9 @@ class _CouponDetailsWidget extends State { topRight: Radius.circular(8), ), ), - child: Column( + child: SingleChildScrollView( + physics: BouncingScrollPhysics(), + child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -78,6 +80,7 @@ class _CouponDetailsWidget extends State { ), Container( color: Colors.white, + margin: EdgeInsets.symmetric(horizontal: 12), child: Html( data: widget.coupon.remark ?? "", customImageRenders: { @@ -89,6 +92,6 @@ class _CouponDetailsWidget extends State { }, ), ), - ])); + ]))); } } diff --git a/lib/view_widget/item_title.dart b/lib/view_widget/item_title.dart index 14c40786..8ac81083 100644 --- a/lib/view_widget/item_title.dart +++ b/lib/view_widget/item_title.dart @@ -117,6 +117,7 @@ class ItemTitle extends StatelessWidget { items: items, value: moreText, onChanged: onChanged, + underline: Container(color: Colors.transparent), ), ); } diff --git a/lib/view_widget/mine_vip_entry.dart b/lib/view_widget/mine_vip_entry.dart index e5d33c45..129f7c1d 100644 --- a/lib/view_widget/mine_vip_entry.dart +++ b/lib/view_widget/mine_vip_entry.dart @@ -70,9 +70,9 @@ class MineVipEntry extends StatelessWidget { Widget widget = Container( width: double.infinity, - padding: EdgeInsets.only(top: 12.h, bottom: 25.h, left: 12, right: 12), + padding: EdgeInsets.only(top: 12.h, bottom: 35.h, left: 12, right: 12), // margin: EdgeInsets.symmetric(horizontal: 14), - margin: EdgeInsets.only(top: 15,left: 14,right: 14), + margin: EdgeInsets.only(top: 15,left: 14,right: 14,bottom:15), decoration: BoxDecoration( color: Color(0xFF3D3D5D), borderRadius: BorderRadius.only( diff --git a/lib/view_widget/new_coupon_widget.dart b/lib/view_widget/new_coupon_widget.dart index 96785008..17714a8c 100644 --- a/lib/view_widget/new_coupon_widget.dart +++ b/lib/view_widget/new_coupon_widget.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/retrofit/data/coupon.dart'; +import 'package:huixiang/utils/flutter_utils.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/separator.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -45,6 +46,7 @@ class NewCouponWidget extends StatelessWidget { height: (coupon != null && coupon.isEx) ? 155.h : 135.h, width: double.infinity, margin: EdgeInsets.fromLTRB(14.w, 6.h, 14.w, 6.h), + padding: EdgeInsets.only(right: 5), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(6), @@ -184,7 +186,7 @@ class NewCouponWidget extends StatelessWidget { child: priceWidget(context), )), Container( - margin: EdgeInsets.only(right: 23.w), + margin: EdgeInsets.only(right: 15.w), child: rightBtn(context), ) ], @@ -408,7 +410,7 @@ class NewCouponWidget extends StatelessWidget { .toString() : "", style: TextStyle( - fontSize: 40.sp, + fontSize: 35.sp, fontWeight: MyFontWeight.semi_bold, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xff32A060), ), @@ -513,7 +515,7 @@ class NewCouponWidget extends StatelessWidget { ), Text( coupon != null - ? double.tryParse("${coupon.limitAmount}" ?? "0").toStringAsFixed(2) + ? "${AppUtils.calculateDouble(double.tryParse(coupon.limitAmount) ?? 0)}" : "", style: TextStyle( fontSize: 35.sp, @@ -541,7 +543,7 @@ class NewCouponWidget extends StatelessWidget { "0" : "", style: TextStyle( - fontSize: 40.sp, + fontSize: 37.sp, fontWeight: MyFontWeight.semi_bold, color: coupon.status == 3 ? Color(0xFFB3B3B3):Color(0xff32A060), ), diff --git a/lib/view_widget/recharge_details_dialog.dart b/lib/view_widget/recharge_details_dialog.dart index 13512eb7..92b880b3 100644 --- a/lib/view_widget/recharge_details_dialog.dart +++ b/lib/view_widget/recharge_details_dialog.dart @@ -33,9 +33,10 @@ class _RechargeWidget extends State { topLeft: const Radius.circular(25.0), topRight: const Radius.circular(25.0))), child: Container( - width: 299, - height:299, - child: Column( + height:355, + child:SingleChildScrollView( + physics: BouncingScrollPhysics(), + child:Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.start, @@ -101,6 +102,6 @@ class _RechargeWidget extends State { ),) ], ), - )); + ))); } }