From 6a036667bd374e58dad5a0c10cfcf95712b5009b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=A0=E6=96=87=E8=BD=A9?= <12812285557@qq.com> Date: Fri, 20 Aug 2021 18:26:17 +0800 Subject: [PATCH] 1.11.1 --- lib/models/goods_simple_list_model.dart | 8 +- lib/models/shopping_cart_list_model.g.dart | 50 ++-- .../home/classify/commodity_detail_page.dart | 14 +- lib/pages/home/classify/goods_page.dart | 7 +- lib/pages/home/home_page.dart | 8 +- .../home/items/item_brand_detail_grid.dart | 4 +- .../home/items/item_brand_like_grid.dart | 6 +- lib/pages/home/widget/good_price_view.dart | 34 ++- .../home/widget/goods_image_page_view.dart | 106 +++++-- .../function/shopping_cart_fuc.dart | 48 +++ .../item/item_shopping_cart.dart | 4 +- .../shopping_cart/similar_goods_page.dart | 278 ++++++++++++++++++ lib/pages/user/items/item_order_list.dart | 4 +- lib/pages/user/order/guide_order_card.dart | 4 +- lib/pages/user/order/order_detail_page.dart | 75 ++--- lib/pages/welcome/welcome_widget.dart | 9 +- lib/widgets/goods_item.dart | 72 ++++- 17 files changed, 588 insertions(+), 143 deletions(-) create mode 100644 lib/pages/shopping_cart/function/shopping_cart_fuc.dart create mode 100644 lib/pages/shopping_cart/similar_goods_page.dart diff --git a/lib/models/goods_simple_list_model.dart b/lib/models/goods_simple_list_model.dart index 35cf5ad..b184351 100644 --- a/lib/models/goods_simple_list_model.dart +++ b/lib/models/goods_simple_list_model.dart @@ -159,19 +159,19 @@ class GoodsSimple { class Living { int status; - int itemId; + int roomId; - Living({this.status, this.itemId}); + Living({this.status, this.roomId}); Living.fromJson(Map json) { status = json['status']; - itemId = json['item_id']; + roomId = json['room_id']; } Map toJson() { final Map data = new Map(); data['status'] = this.status; - data['item_id'] = this.itemId; + data['room_id'] = this.roomId; return data; } } diff --git a/lib/models/shopping_cart_list_model.g.dart b/lib/models/shopping_cart_list_model.g.dart index 1c46ba7..d8e9676 100644 --- a/lib/models/shopping_cart_list_model.g.dart +++ b/lib/models/shopping_cart_list_model.g.dart @@ -55,29 +55,29 @@ Map _$ShoppingCartBrandModelToJson( ShoppingCartGoodsModel _$ShoppingCartGoodsModelFromJson( Map json) { return ShoppingCartGoodsModel( - json['shoppingTrolleyId'] as int, - json['goodsId'] as int, - json['goodsName'] as String, - json['mainPhotoUrl'] as String, - json['skuName'] as String, - json['skuId'] as int, - json['quantity'] as int, - json['valid'] as bool, - (json['price'] as num)?.toDouble(), - json['promotionName'] as String, - json['selected'] as bool, - json['promotion'] == null - ? null - : Promotion.fromJson(json['promotion'] as Map), - json['commission'] as num, - json['originalPrice'] as num, - json['isImport'] as num, - json['isFerme'] as num, - json['storehouse'] as int, - json['ferme'] as num, - json['publish_status'] as num, - json['countryIcon'] as String, - ); + json['shoppingTrolleyId'] as int, + json['goodsId'] as int, + json['goodsName'] as String, + json['mainPhotoUrl'] as String, + json['skuName'] as String, + json['skuId'] as int, + json['quantity'] as int, + json['valid'] as bool, + (json['price'] as num)?.toDouble(), + json['promotionName'] as String, + json['selected'] as bool, + json['promotion'] == null + ? null + : Promotion.fromJson(json['promotion'] as Map), + json['commission'] as num, + json['originalPrice'] as num, + json['isImport'] as num, + json['isFerme'] as num, + json['storehouse'] as int, + json['ferme'] as num, + json['publish_status'] as num, + json['country_icon'] as String, + ); } Map _$ShoppingCartGoodsModelToJson( @@ -97,6 +97,6 @@ Map _$ShoppingCartGoodsModelToJson( 'promotion': instance.promotion, 'commission': instance.commission, 'originalPrice': instance.originalPrice, - 'publish_status':instance.publishStatus, - 'country_icon':instance.countryIcon, + 'publish_status': instance.publishStatus, + 'country_icon': instance.countryIcon, }; diff --git a/lib/pages/home/classify/commodity_detail_page.dart b/lib/pages/home/classify/commodity_detail_page.dart index f9e1207..e4dd205 100644 --- a/lib/pages/home/classify/commodity_detail_page.dart +++ b/lib/pages/home/classify/commodity_detail_page.dart @@ -39,8 +39,8 @@ class CommodityDetailPage extends StatefulWidget { this.liveId = 0, }) : super(key: key); - static setArguments(int goodsID) { - return {"goodsID": goodsID}; + static setArguments(int goodsID, {int liveStatus, int roomId}) { + return {"goodsID": goodsID, 'liveStatus': liveStatus, 'roomId': roomId}; } @override @@ -57,11 +57,15 @@ class _CommodityDetailPageState extends BaseStoreState ValueNotifier _openSkuChoosePage = ValueNotifier(false); int _goodsId; GoodsDetailModel _goodsDetail; + int _liveStatus; + int _roomId; @override void initState() { super.initState(); _goodsId = widget.arguments["goodsID"]; + _liveStatus = widget.arguments["liveStatus"]; + _roomId = widget.arguments["roomId"]; _tabController = TabController(length: 2, vsync: this); _appBarController = AppBarController(); _bottomBarController = BottomBarController(); @@ -145,8 +149,10 @@ class _CommodityDetailPageState extends BaseStoreState controller: _tabController, children: [ GoodsPage( - isLive:widget.isLive, - liveId:widget.liveId, + liveStatus:_liveStatus, + roomId:_roomId, + isLive: widget.isLive, + liveId: widget.liveId, openbrandList: () { // _goodsDetail.data.brandId; AppRouter.push( diff --git a/lib/pages/home/classify/goods_page.dart b/lib/pages/home/classify/goods_page.dart index ccb603e..899501e 100644 --- a/lib/pages/home/classify/goods_page.dart +++ b/lib/pages/home/classify/goods_page.dart @@ -72,6 +72,9 @@ class GoodsPage extends StatefulWidget { final bool isLive; final int liveId; + + final int liveStatus; + final int roomId; const GoodsPage({ Key key, this.onScroll, @@ -80,7 +83,7 @@ class GoodsPage extends StatefulWidget { this.goodsDetail, this.openbrandList, this.isLive = false, - this.liveId = 0, + this.liveId = 0, this.liveStatus, this.roomId, }) : super(key: key); @override @@ -422,7 +425,7 @@ class _GoodsPageState extends BaseStoreState { // images.add(widget.goodsDetail.data.video); // } images.addAll(widget.goodsDetail.data.mainPhotos); - return ImagePageView(images: images, onScrolled: (index) {}); + return ImagePageView(images: images,liveStatus:widget.liveStatus,roomId:widget.roomId,onScrolled: (index) {}); } /// 优惠券 规格等 diff --git a/lib/pages/home/home_page.dart b/lib/pages/home/home_page.dart index 706e759..8fe9906 100644 --- a/lib/pages/home/home_page.dart +++ b/lib/pages/home/home_page.dart @@ -1082,10 +1082,10 @@ class _HomePageState extends BaseStoreState onPressed: () async { if (AppConfig.commissionByRoleLevel) { //AppRouter.push(context, RouteName.REDEEM_LOTTERY_PAGE); - // UserManager.instance.selectTabbarIndex = 2; - // bool value = UserManager.instance.selectTabbar.value; - // UserManager.instance.selectTabbar.value = !value; - Get.to(() => ChooseTicketsTypePage()); + UserManager.instance.selectTabbarIndex = 2; + bool value = UserManager.instance.selectTabbar.value; + UserManager.instance.selectTabbar.value = !value; + //Get.to(() => ChooseTicketsTypePage()); //setState(() {}); } else { AppRouter.push(context, RouteName.GOODS_LIST_TEMP, diff --git a/lib/pages/home/items/item_brand_detail_grid.dart b/lib/pages/home/items/item_brand_detail_grid.dart index 73f9309..48f5764 100644 --- a/lib/pages/home/items/item_brand_detail_grid.dart +++ b/lib/pages/home/items/item_brand_detail_grid.dart @@ -84,7 +84,9 @@ class BrandDetailGridItem extends StatelessWidget { width: 24, height: 15, decoration: BoxDecoration( - color: Color(0xFFCC1B4F), + color: this.goods.countryIcon == null + ? Color(0xFFCC1B4F) + : Colors.transparent, borderRadius: BorderRadius.circular(3 * 2.w), ), child: diff --git a/lib/pages/home/items/item_brand_like_grid.dart b/lib/pages/home/items/item_brand_like_grid.dart index db1cd0b..c1964de 100644 --- a/lib/pages/home/items/item_brand_like_grid.dart +++ b/lib/pages/home/items/item_brand_like_grid.dart @@ -84,10 +84,12 @@ class BrandLikeGridItem extends StatelessWidget { width: 24, height: 15, decoration: BoxDecoration( - color: Color(0xFFCC1B4F), + color: this.goods.countryIcon == null + ? Color(0xFFCC1B4F) + : Colors.transparent, borderRadius: BorderRadius.circular(3 * 2.w), ), - child: this.goods.countryIcon==null? + child:this.goods.countryIcon==null? Text( '进口', style: TextStyle( diff --git a/lib/pages/home/widget/good_price_view.dart b/lib/pages/home/widget/good_price_view.dart index 37da8cf..195c2a5 100644 --- a/lib/pages/home/widget/good_price_view.dart +++ b/lib/pages/home/widget/good_price_view.dart @@ -308,23 +308,27 @@ class _GoodPriceViewState extends State { width: 24, height: 15, decoration: BoxDecoration( - color: Color(0xFFCC1B4F), + color: detailModel.data.countryIcon == null + ? Color(0xFFCC1B4F) + : Colors.transparent, borderRadius: BorderRadius.circular(3 * 2.w), ), - child:detailModel.data.countryIcon==null? - Text( - '进口', - style: TextStyle( - color: Colors.white, - fontSize: 10 * 2.sp, - fontWeight: FontWeight.w600, - ), - ): CustomCacheImage( - width: rSize(100), - height: rSize(100), - imageUrl: Api.getImgUrl( detailModel.data.countryIcon), - fit: BoxFit.cover, - ), + child: detailModel.data.countryIcon == null + ? Text( + '进口', + style: TextStyle( + color: Colors.white, + fontSize: 10 * 2.sp, + fontWeight: FontWeight.w600, + ), + ) + : CustomCacheImage( + width: rSize(100), + height: rSize(100), + imageUrl: Api.getImgUrl( + detailModel.data.countryIcon), + fit: BoxFit.cover, + ), ), ) : WidgetSpan(child: SizedBox()), diff --git a/lib/pages/home/widget/goods_image_page_view.dart b/lib/pages/home/widget/goods_image_page_view.dart index 464469a..1c4c12f 100644 --- a/lib/pages/home/widget/goods_image_page_view.dart +++ b/lib/pages/home/widget/goods_image_page_view.dart @@ -8,12 +8,14 @@ */ import 'package:flutter/material.dart'; - +import 'package:get/get.dart'; import 'package:recook/constants/api.dart'; import 'package:recook/constants/header.dart'; import 'package:recook/models/goods_detail_model.dart'; +import 'package:recook/pages/live/live_stream/live_stream_view_page.dart'; import 'package:recook/widgets/custom_cache_image.dart'; import 'package:recook/widgets/pic_swiper.dart'; +import 'package:recook/widgets/seckill_activity_widget/live_animate_widget.dart'; import 'package:recook/widgets/video_view.dart'; typedef OnScrolledListener = Function(int index); @@ -21,10 +23,18 @@ typedef OnScrolledListener = Function(int index); class ImagePageView extends StatefulWidget { final OnScrolledListener onScrolled; final List images; + + final int liveStatus; + final int roomId; // final Video video; - ImagePageView({Key key, this.onScrolled, this.images,}) - : assert(images != null && images.length > 0, "images 不能为空"); + ImagePageView({ + Key key, + this.onScrolled, + this.images, + this.liveStatus, + this.roomId, + }) : assert(images != null && images.length > 0, "images 不能为空"); @override State createState() { @@ -39,7 +49,7 @@ class _ImagePageViewState extends State { List picSwiperItem = []; @override void initState() { - for (dynamic photo in widget.images){ + for (dynamic photo in widget.images) { if (photo is MainPhotos) { photoList.add(photo); // picSwiperItem.add(PicSwiperItem(Api.getResizeImgUrl(photo.url, DeviceInfo.screenWidth.toInt()*2))); @@ -49,7 +59,6 @@ class _ImagePageViewState extends State { super.initState(); } - @override Widget build(BuildContext context) { return _headPageView(); @@ -73,29 +82,34 @@ class _ImagePageViewState extends State { children: widget.images.map((image) { if (image is MainPhotos) { return CustomCacheImage( - imageClick: (){ - AppRouter.fade( - context, - RouteName.PIC_SWIPER, - arguments: PicSwiper.setArguments( - index: photoList.indexOf(image), - pics: picSwiperItem, - ), - ); - }, + imageClick: () { + AppRouter.fade( + context, + RouteName.PIC_SWIPER, + arguments: PicSwiper.setArguments( + index: photoList.indexOf(image), + pics: picSwiperItem, + ), + ); + }, + height: double.infinity, + width: double.infinity, + fit: BoxFit.cover, + placeholder: AppImageName.placeholder_1x1, + imageUrl: Api.getImgUrl(image.url)); + // imageUrl: Api.getResizeImgUrl(image.url, DeviceInfo.screenWidth.toInt() * 2)); + } else if (image is Video) { + // return Container(height: double.infinity, width: double.infinity,); + return VideoView( + videoUrl: Api.getImgUrl(image.url), + ); + } else { + return Container( height: double.infinity, width: double.infinity, - fit: BoxFit.cover, - placeholder: AppImageName.placeholder_1x1, - imageUrl: Api.getImgUrl(image.url )); - // imageUrl: Api.getResizeImgUrl(image.url, DeviceInfo.screenWidth.toInt() * 2)); - }else if (image is Video){ - // return Container(height: double.infinity, width: double.infinity,); - return VideoView(videoUrl: Api.getImgUrl(image.url),); - }else{ - return Container(height: double.infinity, width: double.infinity,); + ); } - // imageUrl: Api.getImgUrl(image.url),); + // imageUrl: Api.getImgUrl(image.url),); }).toList()), Positioned( bottom: 35, @@ -107,7 +121,47 @@ class _ImagePageViewState extends State { borderRadius: BorderRadius.horizontal(left: Radius.circular(20))), child: _imageCount(), - )) + )), + widget.liveStatus == 1 + ? Positioned( + top: 32.rw, + right: 35.rw, + child: GestureDetector( + onTap: () { + Get.to(LiveStreamViewPage(id: widget.roomId)); + }, + child: Container( + width: 50.rw, + height: 69.rw, + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(7.rw)), + color: Colors.white), + child: Column( + children: [ + 5.hb, + Container( + width: 40.rw, + height: 40.rw, + decoration: BoxDecoration( + color: Color(0xFFFF0000), + borderRadius: + BorderRadius.all(Radius.circular(40.rw))), + child: LiveAnimateWidget( + size: 80.w, + ), + ), + 5.hb, + Text( + '直播中', + style: TextStyle( + fontSize: 10.rsp, color: Color(0xFF333333)), + ) + ], + ), + ), + ), + ) + : SizedBox(), ]), ), ); diff --git a/lib/pages/shopping_cart/function/shopping_cart_fuc.dart b/lib/pages/shopping_cart/function/shopping_cart_fuc.dart new file mode 100644 index 0000000..f62d50c --- /dev/null +++ b/lib/pages/shopping_cart/function/shopping_cart_fuc.dart @@ -0,0 +1,48 @@ +import 'package:recook/constants/api_v2.dart'; +import 'package:recook/manager/http_manager.dart'; +import 'package:recook/models/goods_simple_list_model.dart'; +import 'package:recook/pages/home/model/aku_video_list_model.dart'; + +class ShoppingCartFuc { + //获取可能喜欢列表 + static Future> getLikeGoodsList(int user_id) async { + ResultData result = await HttpManager.post(APIV2.userAPI.getLikeGoodsList, { + 'user_id': user_id, //未登录的时候传 0 + }); + + if (result.data != null) { + if (result.data['data'] != null) { + return (result.data['data'] as List) + .map((e) => GoodsSimple.fromJson(e)) + .toList(); + } + } + } + + //找相似 + static Future> getSimilarGoodsList(int goods_id) async { + ResultData result = + await HttpManager.post(APIV2.userAPI.getSimilarGoodsList, { + 'goods_id': goods_id, + }); + + if (result.data != null) { + if (result.data['data'] != null) { + return (result.data['data'] as List) + .map((e) => GoodsSimple.fromJson(e)) + .toList(); + } + } + } + + //视频列表 + // static Future addHits(int id) async { + // ResultData result = await HttpManager.post(APIV2.userAPI.addHits, { + // 'id': id, + // }); + + // if (result.data != null) { + // return result.data['code']; + // } + // } +} diff --git a/lib/pages/shopping_cart/item/item_shopping_cart.dart b/lib/pages/shopping_cart/item/item_shopping_cart.dart index e08a97a..d599f2e 100644 --- a/lib/pages/shopping_cart/item/item_shopping_cart.dart +++ b/lib/pages/shopping_cart/item/item_shopping_cart.dart @@ -264,7 +264,9 @@ class _ShoppingCartItemState extends State { width: 24, height: 15, decoration: BoxDecoration( - color: Color(0xFFCC1B4F), + color: goods.countryIcon == null + ? Color(0xFFCC1B4F) + : Colors.transparent, borderRadius: BorderRadius.circular(3 * 2.w), ), diff --git a/lib/pages/shopping_cart/similar_goods_page.dart b/lib/pages/shopping_cart/similar_goods_page.dart new file mode 100644 index 0000000..20450ac --- /dev/null +++ b/lib/pages/shopping_cart/similar_goods_page.dart @@ -0,0 +1,278 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'package:recook/base/base_store_state.dart'; +import 'package:recook/constants/header.dart'; +import 'package:recook/manager/user_manager.dart'; +import 'package:recook/models/goods_simple_list_model.dart'; +import 'package:recook/pages/home/classify/brandgoods_list_page.dart'; +import 'package:recook/pages/home/classify/commodity_detail_page.dart'; +import 'package:recook/pages/home/items/item_brand_like_grid.dart'; +import 'package:recook/widgets/custom_app_bar.dart'; +import 'package:recook/widgets/goods_item.dart'; +import 'package:recook/widgets/progress/re_toast.dart'; +import 'package:recook/widgets/recook_back_button.dart'; +import 'package:recook/widgets/refresh_widget.dart'; +import 'package:waterfall_flow/waterfall_flow.dart'; +import 'function/shopping_cart_fuc.dart'; + +class SimilarGoodsPage extends StatefulWidget { + final int goodsId; + //final List similarGoodsList; + const SimilarGoodsPage({Key key, this.goodsId}) : super(key: key); + + @override + State createState() { + return _SimilarGoodsPageState(); + } +} + +class _SimilarGoodsPageState extends BaseStoreState { + GoodsSimpleListModel goodsSimpleListModel; + List _likeGoodsList = []; + List _similarGoodsList = []; + GSRefreshController _refreshController = + GSRefreshController(initialRefresh: true); + @override + void initState() { + super.initState(); + //_similarGoodsList = widget.similarGoodsList; + Future.delayed(Duration.zero, () async { + int userid; + if (UserManager.instance.user.info.id == null) { + userid = 0; + } else { + userid = UserManager.instance.user.info.id; + } + _likeGoodsList = await ShoppingCartFuc.getLikeGoodsList(userid); + setState(() {}); + }); + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget buildContext(BuildContext context, {store}) { + return Scaffold( + backgroundColor: AppColor.tableViewGrayColor, + appBar: CustomAppBar( + appBackground: Color(0xFFC92219), + elevation: 0, + leading: RecookBackButton(white: true), + title: Text( + '找相似', + style: TextStyle(fontSize: 18.rsp, color: Colors.white), + ), + themeData: AppThemes.themeDataGrey.appBarTheme, + ), + body: _buildList(), + ); + } + + _buildLikeTitle() { + return Container( + width: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 22.rw, + height: 2.rw, + decoration: BoxDecoration(color: Color(0xFFC92219)), + ), + Container( + width: 6.rw, + height: 6.rw, + decoration: BoxDecoration( + color: Color(0xFFC92219), + borderRadius: BorderRadius.all(Radius.circular(6.rw))), + ), + 20.wb, + Text( + '您可能还喜欢', + style: TextStyle(color: Color(0xFFC92219), fontSize: 14.rsp), + ), + 20.wb, + Container( + width: 6.rw, + height: 6.rw, + decoration: BoxDecoration( + color: Color(0xFFC92219), + borderRadius: BorderRadius.all(Radius.circular(6.rw))), + ), + Container( + width: 22.rw, + height: 2.rw, + decoration: BoxDecoration(color: Color(0xFFC92219)), + ), + ], + ), + ); + } + + _buildLikeWidget() { + return Container( + padding: EdgeInsets.symmetric(horizontal: 10.rw), + height: _likeGoodsList?.length * 378.rw / 2, + width: double.infinity, + child: Column( + children: [ + 35.hb, + _buildLikeTitle(), + 50.hb, + WaterfallFlow.builder( + primary: false, + shrinkWrap: true, + padding: EdgeInsets.only(bottom: DeviceInfo.bottomBarHeight), + physics: NeverScrollableScrollPhysics(), + itemCount: _likeGoodsList?.length, + gridDelegate: SliverWaterfallFlowDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 10, + mainAxisSpacing: 10, + ), + itemBuilder: (context, index) { + GoodsSimple goods = _likeGoodsList[index]; + + return MaterialButton( + padding: EdgeInsets.zero, + onPressed: () { + AppRouter.push(context, RouteName.COMMODITY_PAGE, + arguments: + CommodityDetailPage.setArguments(goods.id)); + }, + child: BrandLikeGridItem( + goods: goods, + onBrandClick: () { + AppRouter.push(context, RouteName.BRANDGOODS_LIST_PAGE, + arguments: BrandGoodsListPage.setArguments( + goods.brandId, goods.brandName)); + }, + )); + }), + 40.hb, + Container( + alignment: Alignment.center, + child: Text( + '已经到底啦~', + style: TextStyle(color: Color(0xFF999999), fontSize: 14.rsp), + ), + ), + ], + ), + ); + } + + _buildExtraItem(GoodsSimple goods, int index) { + return Column( + children: [ + MaterialButton( + padding: EdgeInsets.zero, + onPressed: () { + AppRouter.push(context, RouteName.COMMODITY_PAGE, + arguments: CommodityDetailPage.setArguments(goods.id)); + }, + child: GoodsItemWidget.normalGoodsItem( + onBrandClick: () { + AppRouter.push(context, RouteName.BRANDGOODS_LIST_PAGE, + arguments: BrandGoodsListPage.setArguments( + goods.brandId, goods.brandName)); + }, + buildCtx: context, + model: goods, + type: 4, + )), + _likeGoodsList != null ? _buildLikeWidget() : SizedBox(), + ], + ); + } + + _buildList() { + return RefreshWidget( + controller: _refreshController, + //noData: '抱歉,没有找相似商品', + noDataText: '抱歉,没有找相似商品', + onRefresh: () async { + //Function cancel = ReToast.loading(); + if (_similarGoodsList.isNotEmpty) { + _similarGoodsList = []; + } + + _similarGoodsList = + await ShoppingCartFuc.getSimilarGoodsList(widget.goodsId); + + setState(() {}); + _refreshController.refreshCompleted(); + //cancel(); + }, + body: _similarGoodsList.isNotEmpty + ? _buildSimilarList() + : noDataView('抱歉,没有找相似商品'), + // + ); + } + + noDataView(String text, {Widget icon}) { + return ListView( + //height: double.infinity, + children: [ + 100.hb, + icon ?? + Image.asset( + R.ASSETS_NODATA_PNG, + width: rSize(80), + height: rSize(80), + ), +// Icon(AppIcons.icon_no_data_search,size: rSize(80),color: Colors.grey), + SizedBox( + height: 8, + ), + Container( + alignment: Alignment.center, + width: double.infinity, + child: Text( + text, + style: AppTextStyle.generate(14 * 2.sp, color: Colors.grey), + ), + ), + + SizedBox( + height: rSize(30), + ), + _buildLikeWidget(), + ], + ); + } + + _buildSimilarList() { + return ListView.builder( + //padding: EdgeInsets.only(bottom: 80.rw), + padding: EdgeInsets.only(top: 10.rw), + physics: AlwaysScrollableScrollPhysics(), + itemCount: _similarGoodsList?.length, + itemBuilder: (context, index) { + GoodsSimple goods = _similarGoodsList[index]; + return index != _similarGoodsList.length - 1 + ? MaterialButton( + padding: EdgeInsets.zero, + onPressed: () { + AppRouter.push(context, RouteName.COMMODITY_PAGE, + arguments: CommodityDetailPage.setArguments(goods.id)); + }, + child: GoodsItemWidget.normalGoodsItem( + onBrandClick: () { + AppRouter.push(context, RouteName.BRANDGOODS_LIST_PAGE, + arguments: BrandGoodsListPage.setArguments( + goods.brandId, goods.brandName)); + }, + buildCtx: context, + model: goods, + type: 4, + )) + : _buildExtraItem(_similarGoodsList[index], index); + }); + } +} diff --git a/lib/pages/user/items/item_order_list.dart b/lib/pages/user/items/item_order_list.dart index e187e85..71331a2 100644 --- a/lib/pages/user/items/item_order_list.dart +++ b/lib/pages/user/items/item_order_list.dart @@ -464,7 +464,9 @@ class _OrderListItemState extends State { width: 24.rw, alignment: Alignment.center, decoration: BoxDecoration( - color: Color(0xFFCC1B4F), + color: goods.countryIcon == null + ? Color(0xFFCC1B4F) + : Colors.transparent, borderRadius: BorderRadius.circular(3.rw), ), child: goods.countryIcon == null diff --git a/lib/pages/user/order/guide_order_card.dart b/lib/pages/user/order/guide_order_card.dart index ec0f430..8f6f849 100644 --- a/lib/pages/user/order/guide_order_card.dart +++ b/lib/pages/user/order/guide_order_card.dart @@ -64,7 +64,9 @@ class GuideOrderCard extends StatelessWidget { width: 24.rw, alignment: Alignment.center, decoration: BoxDecoration( - color: Color(0xFFCC1B4F), + color: item.countryIcon == null + ? Color(0xFFCC1B4F) + : Colors.transparent, borderRadius: BorderRadius.circular(3.rw), ), child: item.countryIcon == null diff --git a/lib/pages/user/order/order_detail_page.dart b/lib/pages/user/order/order_detail_page.dart index 363966f..6c5942d 100644 --- a/lib/pages/user/order/order_detail_page.dart +++ b/lib/pages/user/order/order_detail_page.dart @@ -140,43 +140,44 @@ class _OrderDetailPageState extends OrderDetailState return _deliverItems(); case 4: - { - if (!TextUtils.isEmpty(orderDetail.evaluatedAt)) return []; - DPrint.printf(TextUtils.isEmpty(orderDetail.evaluatedAt)); - return [ - CustomImageButton( - title: "评价", - color: AppColor.themeColor, - fontSize: 13 * 2.sp, - padding: EdgeInsets.symmetric( - vertical: rSize(2), horizontal: rSize(20)), - borderRadius: BorderRadius.all(Radius.circular(40)), - border: Border.all(color: AppColor.themeColor, width: 0.8 * 2.w), - onPressed: () { - List goodsList = []; - orderDetail.brands.forEach((brand) { - brand.goods.forEach((goods) { - if (goods.assType == 0) { - goodsList.add(EvaluationGoodsModel( - id: goods.goodsId, - mainPhotoUrl: goods.mainPhotoUrl, - goodsName: goods.goodsName)); - } - }); - }); - - push(RouteName.ORDER_EVALUATION, - arguments: PublishEvaluationPage.setArguments( - orderId: orderDetail.id, goodsList: goodsList)) - .then((isSuccess) { - if (isSuccess) { - orderDetail.evaluatedAt = "已评价"; - } - }); - }, - ) - ]; - } + return null; + // { + // if (!TextUtils.isEmpty(orderDetail.evaluatedAt)) return []; + // DPrint.printf(TextUtils.isEmpty(orderDetail.evaluatedAt)); + // return [ + // CustomImageButton( + // title: "评价", + // color: AppColor.themeColor, + // fontSize: 13 * 2.sp, + // padding: EdgeInsets.symmetric( + // vertical: rSize(2), horizontal: rSize(20)), + // borderRadius: BorderRadius.all(Radius.circular(40)), + // border: Border.all(color: AppColor.themeColor, width: 0.8 * 2.w), + // onPressed: () { + // List goodsList = []; + // orderDetail.brands.forEach((brand) { + // brand.goods.forEach((goods) { + // if (goods.assType == 0) { + // goodsList.add(EvaluationGoodsModel( + // id: goods.goodsId, + // mainPhotoUrl: goods.mainPhotoUrl, + // goodsName: goods.goodsName)); + // } + // }); + // }); + + // push(RouteName.ORDER_EVALUATION, + // arguments: PublishEvaluationPage.setArguments( + // orderId: orderDetail.id, goodsList: goodsList)) + // .then((isSuccess) { + // if (isSuccess) { + // orderDetail.evaluatedAt = "已评价"; + // } + // }); + // }, + // ) + // ]; + // } } return null; } diff --git a/lib/pages/welcome/welcome_widget.dart b/lib/pages/welcome/welcome_widget.dart index aaf881d..c6de566 100644 --- a/lib/pages/welcome/welcome_widget.dart +++ b/lib/pages/welcome/welcome_widget.dart @@ -152,6 +152,10 @@ class _WelcomeWidgetState extends BaseStoreState { @override void initState() { super.initState(); + Future.delayed(Duration.zero, () async { + UserManager.instance.kingCoinListModelList = + await UserFunc.getKingCoinList(); + }); initPlatformState(); getPackageInfo(); _autoLogin(); @@ -164,10 +168,7 @@ class _WelcomeWidgetState extends BaseStoreState { UserManager.instance.activePeople(); } }); - Future.delayed(Duration.zero, () async { - UserManager.instance.kingCoinListModelList = - await UserFunc.getKingCoinList(); - }); + } Future initPlatformState() async { diff --git a/lib/widgets/goods_item.dart b/lib/widgets/goods_item.dart index f0720b3..debc7a2 100644 --- a/lib/widgets/goods_item.dart +++ b/lib/widgets/goods_item.dart @@ -22,6 +22,7 @@ import 'package:recook/widgets/custom_image_button.dart'; import 'package:recook/models/goods_hot_sell_list_model.dart' as GoodsHotSellListModel; +import 'package:recook/widgets/seckill_activity_widget/live_animate_widget.dart'; enum GoodsItemType { NONE, @@ -325,7 +326,9 @@ class GoodsItemWidget extends StatelessWidget { width: 24.rw, height: 16.rw, decoration: BoxDecoration( - color: Color(0xFFCC1B4F), + color: countryIcon == null + ? Color(0xFFCC1B4F) + : Colors.transparent, borderRadius: BorderRadius.circular(3 * 2.w), ), child: countryIcon == null @@ -415,9 +418,31 @@ class GoodsItemWidget extends StatelessWidget { child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(cir)), child: Stack(children: [ - living? - child: Container(color: AppColor.frenchColor), - ), + living?.status == 1 + ? Positioned( + top: 6.rw, + right: 6.rw, + child: Container( + width: 25.rw, + height: 16.rw, + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(8.rw)), + gradient: LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + colors: [ + Color(0xFFEC4073), + Color(0xFFE50043), + ], + )), + child: Row( + children: [ + LiveAnimateWidget(), + ], + ), + ), + ) + : SizedBox(), Positioned( top: 0, right: 0, @@ -463,18 +488,21 @@ class GoodsItemWidget extends StatelessWidget { specialSale != null ? Positioned( left: 5.rw, - bottom: 5.rw, + top: 5.rw, child: Container( - width: _height - 18, - height: specialSale.length > 3 ? 52.rw : 26.rw, + ///color: Colors.red, + width: (_height - 8.rw) / 3.rw * 2.rw, + height: specialSale == null + ? 0 + : specialSale.length ~/ 2 * 24.rw + 24.rw, child: GridView.builder( shrinkWrap: true, - reverse: true, + //reverse: true, padding: EdgeInsets.zero, gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - childAspectRatio: 2, + crossAxisCount: 2, + childAspectRatio: 2.4, mainAxisSpacing: 5, crossAxisSpacing: 5), itemCount: specialSale.length, @@ -495,18 +523,20 @@ class GoodsItemWidget extends StatelessWidget { specialIcon != null ? Positioned( left: 5.rw, - bottom: 5.rw, + top: 5.rw, child: Container( - width: _height - 18, - height: specialIcon.length > 3 ? 52.rw : 26.rw, + width: (_height - 8.rw) / 3.rw * 2.rw, + height: specialSale == null + ? 0 + : specialSale.length ~/ 2 * 26.rw, child: GridView.builder( shrinkWrap: true, reverse: true, padding: EdgeInsets.zero, gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - childAspectRatio: 2, + crossAxisCount: 2, + childAspectRatio: 2.4, mainAxisSpacing: 5, crossAxisSpacing: 5), itemCount: specialIcon.length, @@ -893,7 +923,17 @@ class GoodsItemWidget extends StatelessWidget { buyClick(); } else { AppRouter.push(buildCtx, RouteName.COMMODITY_PAGE, - arguments: CommodityDetailPage.setArguments(this.id)); + arguments: CommodityDetailPage.setArguments(this.id, + liveStatus: living == null ? null : living.status, + roomId: living == null ? null : living.roomId)); + } + } + + _getLivingStatus(int status) { + if (status == 1) { + return true; + } else { + return false; } } }