@@ -340,8 +340,8 @@ class BaseWidgetRegister { | |||
WidgetFactory.regist('product_detail_image', DefaultWidgetCreater((model) => GoodsDetailsImgWidget(model))); | |||
// 商品推荐列表的小标题 | |||
WidgetFactory.regist('product_detail_recommend_title', DefaultWidgetCreater((model) => GoodsDetailsRecommendTitleWidget(model))); | |||
// 商品详情底部推荐列表 | |||
WidgetFactory.regist('product_detail_bottom_rec', GoodsDetailCommendCreater()); | |||
// 商品详情底部推荐列表(改用首页的商品列表了) | |||
// WidgetFactory.regist('product_detail_bottom_rec', GoodsDetailCommendCreater()); | |||
// 商品详情底部 | |||
WidgetFactory.regist('product_detail_bottom', DefaultWidgetCreater((model) => GoodsDetailsFooterWidget(model))); | |||
@@ -21,6 +21,7 @@ class GoodsDetailsEvaluateModel { | |||
String titleIcon; | |||
String moreText; | |||
String moreIcon; | |||
String moreTextColor; | |||
GoodsDetailsEvaluateModel({ | |||
this.comment_url, | |||
@@ -43,7 +44,8 @@ class GoodsDetailsEvaluateModel { | |||
this.titleColor, | |||
this.titleIcon, | |||
this.moreText, | |||
this.moreIcon | |||
this.moreIcon, | |||
this.moreTextColor, | |||
}); | |||
GoodsDetailsEvaluateModel.fromJson(Map<String, dynamic> json) { | |||
@@ -70,6 +72,7 @@ class GoodsDetailsEvaluateModel { | |||
titleIcon = json['title_icon']; | |||
moreText = json['more_text']; | |||
moreIcon = json['more_icon']; | |||
moreTextColor = json['more_text_color']; | |||
} | |||
Map<String, dynamic> toJson() { | |||
@@ -97,6 +100,7 @@ class GoodsDetailsEvaluateModel { | |||
data['title_icon'] = this.titleIcon; | |||
data['more_text'] = this.moreText; | |||
data['more_icon'] = this.moreIcon; | |||
data['more_text_color'] = this.moreText; | |||
return data; | |||
} | |||
@@ -7,6 +7,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; | |||
import 'package:fluttertoast/fluttertoast.dart'; | |||
import 'package:provider/provider.dart'; | |||
import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_page.dart'; | |||
import 'package:zhiying_base_widget/widgets/custom/multi_nav/cached_network_image_util.dart'; | |||
import 'package:zhiying_base_widget/widgets/goods_details/footer/bloc/goods_details_footer_bloc.dart'; | |||
import 'package:zhiying_base_widget/widgets/goods_details/footer/bloc/goods_details_footer_repository.dart'; | |||
import 'package:zhiying_base_widget/widgets/goods_details/footer/goods_details_footer_sk.dart'; | |||
@@ -210,10 +211,11 @@ class _GoodsDetailsFooterContainerState extends State<_GoodsDetailsFooterContain | |||
width: 110, | |||
// padding: const EdgeInsets.only(left: 30, right: 30, top: 5, bottom: 5), | |||
decoration: BoxDecoration( | |||
gradient: LinearGradient( | |||
colors: [HexColor.fromHex(/*model?.share_earn_bg1_color ??*/ '#FFCA66'), HexColor.fromHex(/*model?.share_earn_bg2_color ??*/ '#FFD961')], | |||
begin: Alignment.centerLeft, | |||
end: Alignment.centerRight), | |||
// gradient: LinearGradient( | |||
// colors: [HexColor.fromHex(/*model?.share_earn_bg1_color ??*/ '#FFCA66'), HexColor.fromHex(/*model?.share_earn_bg2_color ??*/ '#FFD961')], | |||
// begin: Alignment.centerLeft, | |||
// end: Alignment.centerRight), | |||
image: DecorationImage(image: CachedNetworkImageProvider(model?.listStyle?.rightIcon1?.bgImage ?? ''), fit: BoxFit.fitWidth), | |||
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(25), topLeft: Radius.circular(25))), | |||
child: Column( | |||
crossAxisAlignment: CrossAxisAlignment.center, | |||
@@ -248,10 +250,11 @@ class _GoodsDetailsFooterContainerState extends State<_GoodsDetailsFooterContain | |||
height: 44, | |||
width: 110, | |||
decoration: BoxDecoration( | |||
gradient: LinearGradient( | |||
colors: [HexColor.fromHex(/*model?.save_earn_bg1_color ??*/ '#FF6969'), HexColor.fromHex(/*model?.save_earn_bg2_color ??*/ '#FF4646')], | |||
begin: Alignment.centerLeft, | |||
end: Alignment.centerRight), | |||
// gradient: LinearGradient( | |||
// colors: [HexColor.fromHex(/*model?.save_earn_bg1_color ??*/ '#FF6969'), HexColor.fromHex(/*model?.save_earn_bg2_color ??*/ '#FF4646')], | |||
// begin: Alignment.centerLeft, | |||
// end: Alignment.centerRight), | |||
image: DecorationImage(image: CachedNetworkImageProvider(model?.listStyle?.rightIcon2?.bgImage ?? ''), fit: BoxFit.fitWidth), | |||
borderRadius: BorderRadius.only(bottomRight: Radius.circular(25), topRight: Radius.circular(25))), | |||
child: Column( | |||
crossAxisAlignment: CrossAxisAlignment.center, | |||
@@ -48,8 +48,7 @@ class _GoodsDetailsSlideBannerContainerState | |||
void _itemOnClick(String model, List<String> images, int index) { | |||
print('点击了 $model'); | |||
if (images != null) { | |||
PhotoPreview.showPhotoPreviewByimages(context, images, | |||
currentIndex: index, heroTagSuffix: "top"); | |||
PhotoPreview.showPhotoPreviewByimages(context, images, currentIndex: index, heroTagSuffix: "top"); | |||
} | |||
} | |||
@@ -103,6 +102,16 @@ class _GoodsDetailsSlideBannerContainerState | |||
Widget _getMainWidget(GoodsDetailsSlideBannerModel datas) { | |||
return Container( | |||
width: double.infinity, | |||
margin: EdgeInsets.only(top: ParseUtil.stringParseDouble(datas?.topMargin), left: ParseUtil.stringParseDouble(datas?.leftRightMargin), right: ParseUtil.stringParseDouble(datas?.leftRightMargin)), | |||
decoration: BoxDecoration( | |||
color: HexColor.fromHex(datas?.bgColor), | |||
borderRadius: BorderRadius.only( | |||
topRight: Radius.circular(ParseUtil.stringParseDouble(datas?.topRightRadius)), | |||
topLeft: Radius.circular(ParseUtil.stringParseDouble(datas?.topLeftRadius)), | |||
bottomLeft: Radius.circular(ParseUtil.stringParseDouble(datas?.bottomLeftRadius)), | |||
bottomRight: Radius.circular(ParseUtil.stringParseDouble(datas?.bottomRightRadius)), | |||
) | |||
), | |||
height: MediaQuery.of(context).size.width, | |||
child: Swiper( | |||
controller: _control, | |||
@@ -150,20 +159,20 @@ class _GoodsDetailsSlideBannerContainerState | |||
/// 获取进度样式 | |||
SwiperPlugin _getSwiperStyleByType( | |||
GoodsDetailsSlideBannerModel model, int pageCount) { | |||
if ('1' != model.pagination_open) { | |||
return null; | |||
} | |||
// if ('1' != model.pagination_open) { | |||
// return null; | |||
// } | |||
if ('type_number' == model.pagination) { | |||
return _getNumswiperPlugin(pageCount, model.pagination_select_color, | |||
model.pagination_unselect_color); | |||
return _getNumswiperPlugin(pageCount, model.paginationSelectColor, | |||
model.paginationUnselectColor); | |||
} | |||
if ('type_point' == model.pagination) { | |||
return _swiperCustomPaginationDito(pageCount, | |||
model.pagination_select_color, model.pagination_unselect_color); | |||
model.paginationSelectColor, model.paginationUnselectColor); | |||
} | |||
if ('type_bar' == model.pagination) { | |||
return _swiperCustomPagination(pageCount, model.pagination_select_color, | |||
model.pagination_unselect_color); | |||
return _swiperCustomPagination(pageCount, model.paginationSelectColor, | |||
model.paginationUnselectColor); | |||
} | |||
return null; | |||
} | |||
@@ -1,36 +1,121 @@ | |||
class GoodsDetailsSlideBannerModel { | |||
List<String> image_list; | |||
String pagination; | |||
String pagination_open; | |||
List<String> pagination_options; | |||
String pagination_select_color; | |||
String pagination_unselect_color; | |||
List<String> image_list; | |||
GoodsDetailsSlideBannerModel({this.image_list, this.pagination, this.pagination_open, this.pagination_options, this.pagination_select_color, this.pagination_unselect_color}); | |||
String name; | |||
String desc; | |||
String pagination; | |||
String moduleType; | |||
String moduleKey; | |||
String isTopMargin; | |||
String isLeftRightMargin; | |||
String isShow; | |||
String carouselType; | |||
String paginationSelectColor; | |||
String paginationUnselectColor; | |||
String barWidthHeightRatio; | |||
String bgWidthHeightRatio; | |||
String carouselTime; | |||
String topMargin; | |||
String leftRightMargin; | |||
String topLeftRadius; | |||
String topRightRadius; | |||
String bottomLeftRadius; | |||
String bottomRightRadius; | |||
String bgColor; | |||
String hasVideo; | |||
// List<Null> indexCarouselList; | |||
factory GoodsDetailsSlideBannerModel.fromJson(Map<String, dynamic> json) { | |||
return GoodsDetailsSlideBannerModel( | |||
image_list: json['image_list'] != null ? new List<String>.from(json['image_list']) : null, | |||
pagination: json['pagination'], | |||
pagination_open: json['pagination_open'], | |||
pagination_options: json['pagination_options'] != null ? new List<String>.from(json['pagination_options']) : null, | |||
pagination_select_color: json['pagination_select_color'], | |||
pagination_unselect_color: json['pagination_unselect_color'], | |||
); | |||
} | |||
GoodsDetailsSlideBannerModel({ | |||
this.image_list, | |||
this.name, | |||
this.desc, | |||
this.pagination, | |||
this.moduleType, | |||
this.moduleKey, | |||
this.isTopMargin, | |||
this.isLeftRightMargin, | |||
this.isShow, | |||
this.carouselType, | |||
this.paginationSelectColor, | |||
this.paginationUnselectColor, | |||
this.barWidthHeightRatio, | |||
this.bgWidthHeightRatio, | |||
this.carouselTime, | |||
this.topMargin, | |||
this.leftRightMargin, | |||
this.topLeftRadius, | |||
this.topRightRadius, | |||
this.bottomLeftRadius, | |||
this.bottomRightRadius, | |||
this.bgColor, | |||
this.hasVideo, | |||
// this.indexCarouselList, | |||
}); | |||
GoodsDetailsSlideBannerModel.fromJson(Map<String, dynamic> json) { | |||
image_list = json['image_list'] != null ? new List<String>.from(json['image_list']) : null; | |||
name = json['name']; | |||
desc = json['desc']; | |||
pagination = json['pagination']; | |||
moduleType = json['module_type']; | |||
moduleKey = json['module_key']; | |||
isTopMargin = json['is_top_margin']; | |||
isLeftRightMargin = json['is_left_right_margin']; | |||
isShow = json['is_show']; | |||
carouselType = json['carousel_type']; | |||
paginationSelectColor = json['pagination_select_color']; | |||
paginationUnselectColor = json['pagination_unselect_color']; | |||
barWidthHeightRatio = json['bar_width_height_ratio']; | |||
bgWidthHeightRatio = json['bg_width_height_ratio']; | |||
carouselTime = json['carousel_time']; | |||
topMargin = json['top_margin']; | |||
leftRightMargin = json['left_right_margin']; | |||
topLeftRadius = json['top_left_radius']; | |||
topRightRadius = json['top_right_radius']; | |||
bottomLeftRadius = json['bottom_left_radius']; | |||
bottomRightRadius = json['bottom_right_radius']; | |||
bgColor = json['bg_color']; | |||
hasVideo = json['has_video']; | |||
// if (json['index_carousel_list'] != null) { | |||
// indexCarouselList = new List<Null>(); | |||
// json['index_carousel_list'].forEach((v) { | |||
// indexCarouselList.add(new Null.fromJson(v)); | |||
// }); | |||
// } | |||
} | |||
Map<String, dynamic> toJson() { | |||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||
data['pagination'] = this.pagination; | |||
data['pagination_open'] = this.pagination_open; | |||
data['pagination_select_color'] = this.pagination_select_color; | |||
data['pagination_unselect_color'] = this.pagination_unselect_color; | |||
if (this.image_list != null) { | |||
data['image_list'] = this.image_list; | |||
} | |||
if (this.pagination_options != null) { | |||
data['pagination_options'] = this.pagination_options; | |||
} | |||
return data; | |||
Map<String, dynamic> toJson() { | |||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||
if (this.image_list != null) { | |||
data['image_list'] = this.image_list; | |||
} | |||
} | |||
data['name'] = this.name; | |||
data['desc'] = this.desc; | |||
data['pagination'] = this.pagination; | |||
data['module_type'] = this.moduleType; | |||
data['module_key'] = this.moduleKey; | |||
data['is_top_margin'] = this.isTopMargin; | |||
data['is_left_right_margin'] = this.isLeftRightMargin; | |||
data['is_show'] = this.isShow; | |||
data['carousel_type'] = this.carouselType; | |||
data['pagination_select_color'] = this.paginationSelectColor; | |||
data['pagination_unselect_color'] = this.paginationUnselectColor; | |||
data['bar_width_height_ratio'] = this.barWidthHeightRatio; | |||
data['bg_width_height_ratio'] = this.bgWidthHeightRatio; | |||
data['carousel_time'] = this.carouselTime; | |||
data['top_margin'] = this.topMargin; | |||
data['left_right_margin'] = this.leftRightMargin; | |||
data['top_left_radius'] = this.topLeftRadius; | |||
data['top_right_radius'] = this.topRightRadius; | |||
data['bottom_left_radius'] = this.bottomLeftRadius; | |||
data['bottom_right_radius'] = this.bottomRightRadius; | |||
data['bg_color'] = this.bgColor; | |||
data['has_video'] = this.hasVideo; | |||
// if (this.indexCarouselList != null) { | |||
// data['index_carousel_list'] = | |||
// this.indexCarouselList.map((v) => v.toJson()).toList(); | |||
// } | |||
return data; | |||
} | |||
} |
@@ -140,7 +140,7 @@ class _StoreContainerState extends State<StoreContainer> { | |||
mainAxisAlignment: MainAxisAlignment.spaceBetween, | |||
children: <Widget>[ | |||
/// 商店名称 | |||
Text(model?.shop_name ?? '品胜京东自营旗舰店', | |||
Text(model?.shop_name ?? '', | |||
style: TextStyle( | |||
color: HexColor.fromHex(model?.shopTextColor ?? '#333333'), | |||
fontSize: 13, | |||
@@ -121,7 +121,7 @@ class GoodsDetailsTitleWidget extends StatelessWidget { | |||
if(model?.provider == GlobalConfig.PROVIDER_VIP || model?.provider == GlobalConfig.PROVIDER_KL){ | |||
return Container(); | |||
} | |||
return Text('${model?.soldCount}人已购买' ?? '99999人已购买', style: TextStyle(color: HexColor.fromHex(/*model?.buy_color ??*/ '#999999'), fontSize: 12.5)); | |||
return Text('${model?.soldCount?? 0}${model?.goBuyText ?? '人已购买'}' ?? '99999人已购买', style: TextStyle(color: HexColor.fromHex(model?.goBuyColor ?? '#999999'), fontSize: 12.5)); | |||
} | |||
@@ -24,6 +24,8 @@ class GoodsDetailsTitleModel { | |||
String rewardStr; | |||
List<PlatformCss> platformCss; | |||
List<String> sourceList; | |||
String goBuyText; | |||
String goBuyColor; | |||
String currentPrice; | |||
@@ -62,6 +64,8 @@ class GoodsDetailsTitleModel { | |||
this.rewardStr, | |||
this.platformCss, | |||
this.sourceList, | |||
this.goBuyText, | |||
this.goBuyColor, | |||
this.currentPrice, | |||
this.isCoupon, | |||
@@ -105,6 +109,8 @@ class GoodsDetailsTitleModel { | |||
}); | |||
} | |||
sourceList = json['source_list'].cast<String>(); | |||
goBuyText = json['go_buy_text']; | |||
goBuyColor = json['go_buy_text_color']; | |||
currentPrice = json['current_price']; | |||
isCoupon = json['is_coupon']; | |||
@@ -146,6 +152,8 @@ class GoodsDetailsTitleModel { | |||
data['platform_css'] = this.platformCss.map((v) => v.toJson()).toList(); | |||
} | |||
data['source_list'] = this.sourceList; | |||
data['go_buy_text'] = this.goBuyText; | |||
data['go_buy_text_color'] = this.goBuyColor; | |||
data['current_price'] = this.currentPrice; | |||
data['is_coupon'] = this.isCoupon; | |||
@@ -20,6 +20,7 @@ class UpgradeTipModel { | |||
String bottomRightRadius; | |||
String bgColor; | |||
String bulletinText; | |||
String bulletinBgColor; | |||
String bulletinTextColor; | |||
String goText; | |||
GoSkip goSkip; | |||
@@ -41,6 +42,7 @@ class UpgradeTipModel { | |||
this.bottomRightRadius, | |||
this.bgColor, | |||
this.bulletinText, | |||
this.bulletinBgColor, | |||
this.bulletinTextColor, | |||
this.goText, | |||
this.goSkip, | |||
@@ -64,6 +66,7 @@ class UpgradeTipModel { | |||
bottomRightRadius = json['bottom_right_radius']; | |||
bgColor = json['bg_color']; | |||
bulletinText = json['bulletin_text']; | |||
bulletinBgColor = json ['bulletin_bg_color']; | |||
bulletinTextColor = json['bulletin_text_color']; | |||
goText = json['go_text']; | |||
goSkip = | |||
@@ -90,6 +93,7 @@ class UpgradeTipModel { | |||
data['bottom_right_radius'] = this.bottomRightRadius; | |||
data['bg_color'] = this.bgColor; | |||
data['bulletin_text'] = this.bulletinText; | |||
data['bulletin_bg_color'] = this.bulletinBgColor; | |||
data['bulletin_text_color'] = this.bulletinTextColor; | |||
data['go_text'] = this.goText; | |||
if (this.goSkip != null) { | |||
@@ -34,8 +34,8 @@ class UpgradeTipWidget extends StatelessWidget { | |||
margin: EdgeInsets.only(top: ParseUtil.stringParseDouble(_model?.topMargin), left: ParseUtil.stringParseDouble(_model?.leftRightMargin), right: ParseUtil.stringParseDouble(_model?.leftRightMargin)), | |||
padding: const EdgeInsets.only(left: 12.5, right: 12.5, top: 6, bottom: 6), | |||
decoration: BoxDecoration( | |||
// color: HexColor.fromHex(_model?.bgColor), | |||
color: Colors.white, | |||
color: HexColor.fromHex(_model?.bgColor), | |||
// color: Colors.white, | |||
borderRadius: BorderRadius.only( | |||
topLeft: Radius.circular(ParseUtil.stringParseDouble(_model?.topLeftRadius)), | |||
topRight: Radius.circular(ParseUtil.stringParseDouble(_model?.topLeftRadius)), | |||
@@ -48,7 +48,7 @@ class UpgradeTipWidget extends StatelessWidget { | |||
child: Container( | |||
decoration: BoxDecoration( | |||
/// 背景颜色 | |||
color: HexColor.fromHex(_model?.bgColor ?? '#FFEFDA'), | |||
color: HexColor.fromHex(_model?.bulletinBgColor ?? '#FFEFDA'), | |||
borderRadius: BorderRadius.circular(30), | |||
), | |||
padding: const EdgeInsets.only(left: 10, right: 13, top: 10, bottom: 10), | |||