|
@@ -98,13 +98,13 @@ class StorePage extends BasePage<StoreController> {
|
|
|
SizedBox(width: 8.w),
|
|
SizedBox(width: 8.w),
|
|
|
controller.isLogin
|
|
controller.isLogin
|
|
|
? Assets.images.iconMineUserLogged.image(
|
|
? Assets.images.iconMineUserLogged.image(
|
|
|
- width: 28.w,
|
|
|
|
|
- height: 28.w,
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ width: 28.w,
|
|
|
|
|
+ height: 28.w,
|
|
|
|
|
+ )
|
|
|
: Assets.images.iconMineUserNoLogin.image(
|
|
: Assets.images.iconMineUserNoLogin.image(
|
|
|
- width: 28.w,
|
|
|
|
|
- height: 28.w,
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ width: 28.w,
|
|
|
|
|
+ height: 28.w,
|
|
|
|
|
+ ),
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
|
);
|
|
);
|
|
@@ -222,17 +222,17 @@ class StorePage extends BasePage<StoreController> {
|
|
|
Obx(() {
|
|
Obx(() {
|
|
|
return Column(
|
|
return Column(
|
|
|
children:
|
|
children:
|
|
|
- controller.filteredGoodsList.map((item) {
|
|
|
|
|
- return Obx(() {
|
|
|
|
|
- return GestureDetector(
|
|
|
|
|
- onTap: () => controller.onGoodsItemClick(item),
|
|
|
|
|
- child: _buildGoodsItem(
|
|
|
|
|
- item,
|
|
|
|
|
- controller.selectedGoodsInfoItem?.id == item.id,
|
|
|
|
|
- ),
|
|
|
|
|
- );
|
|
|
|
|
- });
|
|
|
|
|
- }).toList(),
|
|
|
|
|
|
|
+ controller.filteredGoodsList.map((item) {
|
|
|
|
|
+ return Obx(() {
|
|
|
|
|
+ return GestureDetector(
|
|
|
|
|
+ onTap: () => controller.onGoodsItemClick(item),
|
|
|
|
|
+ child: _buildGoodsItem(
|
|
|
|
|
+ item,
|
|
|
|
|
+ controller.selectedGoodsInfoItem?.id == item.id,
|
|
|
|
|
+ ),
|
|
|
|
|
+ );
|
|
|
|
|
+ });
|
|
|
|
|
+ }).toList(),
|
|
|
);
|
|
);
|
|
|
}),
|
|
}),
|
|
|
_buildPayWayCard(),
|
|
_buildPayWayCard(),
|
|
@@ -304,9 +304,9 @@ class StorePage extends BasePage<StoreController> {
|
|
|
begin: Alignment(0.77, -0.00),
|
|
begin: Alignment(0.77, -0.00),
|
|
|
end: Alignment(0.77, 1.00),
|
|
end: Alignment(0.77, 1.00),
|
|
|
colors:
|
|
colors:
|
|
|
- isSelected
|
|
|
|
|
- ? [const Color(0xFFFF9416), const Color(0xFFFF7813)]
|
|
|
|
|
- : [const Color(0xFFFEE057), const Color(0xFFFFC400)],
|
|
|
|
|
|
|
+ isSelected
|
|
|
|
|
+ ? [const Color(0xFFFF9416), const Color(0xFFFF7813)]
|
|
|
|
|
+ : [const Color(0xFFFEE057), const Color(0xFFFFC400)],
|
|
|
),
|
|
),
|
|
|
shape: RoundedRectangleBorder(
|
|
shape: RoundedRectangleBorder(
|
|
|
borderRadius: BorderRadius.circular(10.r),
|
|
borderRadius: BorderRadius.circular(10.r),
|
|
@@ -319,16 +319,16 @@ class StorePage extends BasePage<StoreController> {
|
|
|
height: 70.h,
|
|
height: 70.h,
|
|
|
decoration: ShapeDecoration(
|
|
decoration: ShapeDecoration(
|
|
|
gradient:
|
|
gradient:
|
|
|
- isSelected
|
|
|
|
|
- ? LinearGradient(
|
|
|
|
|
- begin: Alignment(-0.06, 0.50),
|
|
|
|
|
- end: Alignment(1.14, 0.50),
|
|
|
|
|
- colors: [
|
|
|
|
|
- const Color(0xFFFFF895),
|
|
|
|
|
- const Color(0xFFFFE941),
|
|
|
|
|
- ],
|
|
|
|
|
- )
|
|
|
|
|
- : null,
|
|
|
|
|
|
|
+ isSelected
|
|
|
|
|
+ ? LinearGradient(
|
|
|
|
|
+ begin: Alignment(-0.06, 0.50),
|
|
|
|
|
+ end: Alignment(1.14, 0.50),
|
|
|
|
|
+ colors: [
|
|
|
|
|
+ const Color(0xFFFFF895),
|
|
|
|
|
+ const Color(0xFFFFE941),
|
|
|
|
|
+ ],
|
|
|
|
|
+ )
|
|
|
|
|
+ : null,
|
|
|
color: isSelected ? null : const Color(0xFFFFFDEE),
|
|
color: isSelected ? null : const Color(0xFFFFFDEE),
|
|
|
shape: RoundedRectangleBorder(
|
|
shape: RoundedRectangleBorder(
|
|
|
side: BorderSide(width: 1, color: const Color(0xFFFEE86B)),
|
|
side: BorderSide(width: 1, color: const Color(0xFFFEE86B)),
|
|
@@ -429,25 +429,25 @@ class StorePage extends BasePage<StoreController> {
|
|
|
Text(
|
|
Text(
|
|
|
item.name,
|
|
item.name,
|
|
|
style:
|
|
style:
|
|
|
- isSelected
|
|
|
|
|
- ? Styles.getTextStyleFFECBBW500(15.sp)
|
|
|
|
|
- : Styles.getTextStyleFF663300W500(15.sp),
|
|
|
|
|
|
|
+ isSelected
|
|
|
|
|
+ ? Styles.getTextStyleFFECBBW500(15.sp)
|
|
|
|
|
+ : Styles.getTextStyleFF663300W500(15.sp),
|
|
|
),
|
|
),
|
|
|
Container(
|
|
Container(
|
|
|
padding: EdgeInsets.symmetric(horizontal: 8.w),
|
|
padding: EdgeInsets.symmetric(horizontal: 8.w),
|
|
|
decoration: ShapeDecoration(
|
|
decoration: ShapeDecoration(
|
|
|
color: isSelected ? const Color(0xFFFFECBB) : null,
|
|
color: isSelected ? const Color(0xFFFFECBB) : null,
|
|
|
gradient:
|
|
gradient:
|
|
|
- isSelected
|
|
|
|
|
- ? null
|
|
|
|
|
- : LinearGradient(
|
|
|
|
|
- begin: Alignment(0.77, -0.00),
|
|
|
|
|
- end: Alignment(0.77, 1.00),
|
|
|
|
|
- colors: [
|
|
|
|
|
- const Color(0xFFFF9416),
|
|
|
|
|
- const Color(0xFFFF7813),
|
|
|
|
|
- ],
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ isSelected
|
|
|
|
|
+ ? null
|
|
|
|
|
+ : LinearGradient(
|
|
|
|
|
+ begin: Alignment(0.77, -0.00),
|
|
|
|
|
+ end: Alignment(0.77, 1.00),
|
|
|
|
|
+ colors: [
|
|
|
|
|
+ const Color(0xFFFF9416),
|
|
|
|
|
+ const Color(0xFFFF7813),
|
|
|
|
|
+ ],
|
|
|
|
|
+ ),
|
|
|
shape: RoundedRectangleBorder(
|
|
shape: RoundedRectangleBorder(
|
|
|
borderRadius: BorderRadius.circular(
|
|
borderRadius: BorderRadius.circular(
|
|
|
isSelected ? 17.r : 10.r,
|
|
isSelected ? 17.r : 10.r,
|
|
@@ -458,9 +458,9 @@ class StorePage extends BasePage<StoreController> {
|
|
|
'¥${item.amountText}',
|
|
'¥${item.amountText}',
|
|
|
textAlign: TextAlign.center,
|
|
textAlign: TextAlign.center,
|
|
|
style:
|
|
style:
|
|
|
- isSelected
|
|
|
|
|
- ? Styles.getTextStyleFF7F14W500(12.sp)
|
|
|
|
|
- : Styles.getTextStyleWhiteW500(12.sp),
|
|
|
|
|
|
|
+ isSelected
|
|
|
|
|
+ ? Styles.getTextStyleFF7F14W500(12.sp)
|
|
|
|
|
+ : Styles.getTextStyleWhiteW500(12.sp),
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|
|
|
],
|
|
],
|
|
@@ -534,12 +534,12 @@ class StorePage extends BasePage<StoreController> {
|
|
|
),
|
|
),
|
|
|
|
|
|
|
|
items:
|
|
items:
|
|
|
- controller.bannerList.map((item) {
|
|
|
|
|
- return item.banner.image(
|
|
|
|
|
- width: double.infinity,
|
|
|
|
|
- fit: BoxFit.cover,
|
|
|
|
|
- );
|
|
|
|
|
- }).toList(),
|
|
|
|
|
|
|
+ controller.bannerList.map((item) {
|
|
|
|
|
+ return item.banner.image(
|
|
|
|
|
+ width: double.infinity,
|
|
|
|
|
+ fit: BoxFit.cover,
|
|
|
|
|
+ );
|
|
|
|
|
+ }).toList(),
|
|
|
),
|
|
),
|
|
|
Positioned(bottom: 0, left: 0, right: 0, child: _buildIndicator()),
|
|
Positioned(bottom: 0, left: 0, right: 0, child: _buildIndicator()),
|
|
|
],
|
|
],
|
|
@@ -561,57 +561,61 @@ class StorePage extends BasePage<StoreController> {
|
|
|
child: Row(
|
|
child: Row(
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
|
children:
|
|
children:
|
|
|
- controller.bannerList.asMap().entries.map((entry) {
|
|
|
|
|
- return Obx(() {
|
|
|
|
|
- final isSelectedBanner =
|
|
|
|
|
- controller.currentBannerIndex == entry.key;
|
|
|
|
|
- return Row(
|
|
|
|
|
- mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
|
|
|
- children: [
|
|
|
|
|
- GestureDetector(
|
|
|
|
|
- onTap:
|
|
|
|
|
- () => controller.carouselSliderController
|
|
|
|
|
- .animateToPage(entry.key),
|
|
|
|
|
- child: SizedBox(
|
|
|
|
|
- width: 100.w,
|
|
|
|
|
- child: Stack(
|
|
|
|
|
- alignment: Alignment.center,
|
|
|
|
|
- clipBehavior: Clip.none,
|
|
|
|
|
- children: [
|
|
|
|
|
- if (isSelectedBanner)
|
|
|
|
|
- Positioned(
|
|
|
|
|
- top: -8.h,
|
|
|
|
|
- child: controller
|
|
|
|
|
- .bannerList[entry.key]
|
|
|
|
|
- .indicatorImg
|
|
|
|
|
- .image(
|
|
|
|
|
- width: 100.w,
|
|
|
|
|
- height: 40.h,
|
|
|
|
|
- fit: BoxFit.fill,
|
|
|
|
|
- ),
|
|
|
|
|
- )
|
|
|
|
|
- else
|
|
|
|
|
- Text(
|
|
|
|
|
- controller.bannerList[entry.key].unSelectedDesc,
|
|
|
|
|
- style: Styles.getTextStyleWhiteW400(14.sp),
|
|
|
|
|
- ),
|
|
|
|
|
- ],
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ controller.bannerList
|
|
|
|
|
+ .asMap()
|
|
|
|
|
+ .entries
|
|
|
|
|
+ .map((entry) {
|
|
|
|
|
+ return Obx(() {
|
|
|
|
|
+ final isSelectedBanner =
|
|
|
|
|
+ controller.currentBannerIndex == entry.key;
|
|
|
|
|
+ return Row(
|
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
|
|
|
+ children: [
|
|
|
|
|
+ GestureDetector(
|
|
|
|
|
+ onTap:
|
|
|
|
|
+ () =>
|
|
|
|
|
+ controller.carouselSliderController
|
|
|
|
|
+ .animateToPage(entry.key),
|
|
|
|
|
+ child: SizedBox(
|
|
|
|
|
+ width: 100.w,
|
|
|
|
|
+ child: Stack(
|
|
|
|
|
+ alignment: Alignment.center,
|
|
|
|
|
+ clipBehavior: Clip.none,
|
|
|
|
|
+ children: [
|
|
|
|
|
+ if (isSelectedBanner)
|
|
|
|
|
+ Positioned(
|
|
|
|
|
+ top: -8.h,
|
|
|
|
|
+ child: controller
|
|
|
|
|
+ .bannerList[entry.key]
|
|
|
|
|
+ .indicatorImg
|
|
|
|
|
+ .image(
|
|
|
|
|
+ width: 100.w,
|
|
|
|
|
+ height: 40.h,
|
|
|
|
|
+ fit: BoxFit.fill,
|
|
|
|
|
+ ),
|
|
|
|
|
+ )
|
|
|
|
|
+ else
|
|
|
|
|
+ Text(
|
|
|
|
|
+ controller.bannerList[entry.key].unSelectedDesc,
|
|
|
|
|
+ style: Styles.getTextStyleWhiteW400(14.sp),
|
|
|
|
|
+ ),
|
|
|
|
|
+ ],
|
|
|
),
|
|
),
|
|
|
- if (entry.key != controller.bannerList.length - 1)
|
|
|
|
|
- Padding(
|
|
|
|
|
- padding: EdgeInsets.only(left: 4.w),
|
|
|
|
|
- child: Assets.images.iconStoreDivider.image(
|
|
|
|
|
- width: 2.w,
|
|
|
|
|
- height: 17.h,
|
|
|
|
|
- fit: BoxFit.fill,
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- ],
|
|
|
|
|
- );
|
|
|
|
|
- });
|
|
|
|
|
- }).toList(),
|
|
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
|
|
+ if (entry.key != controller.bannerList.length - 1)
|
|
|
|
|
+ Padding(
|
|
|
|
|
+ padding: EdgeInsets.only(left: 4.w),
|
|
|
|
|
+ child: Assets.images.iconStoreDivider.image(
|
|
|
|
|
+ width: 2.w,
|
|
|
|
|
+ height: 17.h,
|
|
|
|
|
+ fit: BoxFit.fill,
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
|
|
+ ],
|
|
|
|
|
+ );
|
|
|
|
|
+ });
|
|
|
|
|
+ }).toList(),
|
|
|
),
|
|
),
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
@@ -679,9 +683,9 @@ class StorePage extends BasePage<StoreController> {
|
|
|
),
|
|
),
|
|
|
child: Column(
|
|
child: Column(
|
|
|
children:
|
|
children:
|
|
|
- controller.userReviewsList.map((item) {
|
|
|
|
|
- return _buildReviewsItem(item);
|
|
|
|
|
- }).toList(),
|
|
|
|
|
|
|
+ controller.userReviewsList.map((item) {
|
|
|
|
|
+ return _buildReviewsItem(item);
|
|
|
|
|
+ }).toList(),
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|
|
|
],
|
|
],
|
|
@@ -757,14 +761,12 @@ class StorePage extends BasePage<StoreController> {
|
|
|
children: [
|
|
children: [
|
|
|
Text('购买须知', style: Styles.getTextStyleFF663300W400(12.sp)),
|
|
Text('购买须知', style: Styles.getTextStyleFF663300W400(12.sp)),
|
|
|
SizedBox(height: 8.h),
|
|
SizedBox(height: 8.h),
|
|
|
- Text(
|
|
|
|
|
- "1.会员权益将在购买成功后自动生效,如遇延迟,请耐心等待5-10分钟。若长时间未生效,请联系客服处理;\n"
|
|
|
|
|
- "2.本服务为虚拟商品,一经购买成功即视为使用,恕不支持退款或转让,感谢您的理解;\n"
|
|
|
|
|
- "3.您的支持是我们持续优化与服务的动力,我们将竭诚为您提供更好的体验;\n"
|
|
|
|
|
- "4.相关细则以《会员服务协议》为准,在法律允许范围内,我们保留最终解释权。开通即视为同意协议条款,请谨慎购买。\n"
|
|
|
|
|
- "如有疑问,欢迎随时咨询在线客服!",
|
|
|
|
|
- style: Styles.getTextStyle99673300W400(10.sp),
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ Obx(() {
|
|
|
|
|
+ return Text(
|
|
|
|
|
+ controller.configRepository.memberTips.value,
|
|
|
|
|
+ style: Styles.getTextStyle99673300W400(10.sp),
|
|
|
|
|
+ );
|
|
|
|
|
+ }),
|
|
|
SizedBox(height: 150.h),
|
|
SizedBox(height: 150.h),
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
@@ -853,27 +855,27 @@ class StorePage extends BasePage<StoreController> {
|
|
|
child: Padding(
|
|
child: Padding(
|
|
|
padding: EdgeInsets.symmetric(vertical: 10.w, horizontal: 10.w),
|
|
padding: EdgeInsets.symmetric(vertical: 10.w, horizontal: 10.w),
|
|
|
child:
|
|
child:
|
|
|
- controller.isAgree.value
|
|
|
|
|
- ? Assets.images.iconStoreAgreePrivacy.image(
|
|
|
|
|
- width: 16.w,
|
|
|
|
|
- height: 16.w,
|
|
|
|
|
- )
|
|
|
|
|
- : SizedBox(
|
|
|
|
|
- child: Container(
|
|
|
|
|
- padding: EdgeInsets.all(1.w),
|
|
|
|
|
- width: 16.w,
|
|
|
|
|
- height: 16.w,
|
|
|
|
|
- child: Container(
|
|
|
|
|
- decoration: BoxDecoration(
|
|
|
|
|
- shape: BoxShape.circle,
|
|
|
|
|
- border: Border.all(
|
|
|
|
|
- color: Colors.black.withAlpha(153),
|
|
|
|
|
- width: 1.w,
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ controller.isAgree.value
|
|
|
|
|
+ ? Assets.images.iconStoreAgreePrivacy.image(
|
|
|
|
|
+ width: 16.w,
|
|
|
|
|
+ height: 16.w,
|
|
|
|
|
+ )
|
|
|
|
|
+ : SizedBox(
|
|
|
|
|
+ child: Container(
|
|
|
|
|
+ padding: EdgeInsets.all(1.w),
|
|
|
|
|
+ width: 16.w,
|
|
|
|
|
+ height: 16.w,
|
|
|
|
|
+ child: Container(
|
|
|
|
|
+ decoration: BoxDecoration(
|
|
|
|
|
+ shape: BoxShape.circle,
|
|
|
|
|
+ border: Border.all(
|
|
|
|
|
+ color: Colors.black.withAlpha(153),
|
|
|
|
|
+ width: 1.w,
|
|
|
),
|
|
),
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
),
|
|
),
|
|
|
);
|
|
);
|
|
|
}),
|
|
}),
|