|
@@ -31,8 +31,10 @@ import 'member_header_cycle_widget.dart';
|
|
|
enum MemberPageType {
|
|
enum MemberPageType {
|
|
|
///通用进入
|
|
///通用进入
|
|
|
universalAccessEnter,
|
|
universalAccessEnter,
|
|
|
|
|
+
|
|
|
///倒计时试用完会员进入
|
|
///倒计时试用完会员进入
|
|
|
afeterTrialMemberEnter,
|
|
afeterTrialMemberEnter,
|
|
|
|
|
+
|
|
|
///加好友进入
|
|
///加好友进入
|
|
|
addFriendToEnter,
|
|
addFriendToEnter,
|
|
|
//活动页
|
|
//活动页
|
|
@@ -40,13 +42,13 @@ enum MemberPageType {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
class MemberPage extends BasePage<MemberController> {
|
|
class MemberPage extends BasePage<MemberController> {
|
|
|
-
|
|
|
|
|
- MemberPage({super.key,this.pageType});
|
|
|
|
|
|
|
+ MemberPage({super.key, this.pageType});
|
|
|
|
|
|
|
|
late MemberPageType? pageType = MemberPageType.universalAccessEnter;
|
|
late MemberPageType? pageType = MemberPageType.universalAccessEnter;
|
|
|
|
|
|
|
|
- static void start({MemberPageType? enterTyp = MemberPageType.universalAccessEnter}) {
|
|
|
|
|
- Get.toNamed(RoutePath.member,arguments: enterTyp);
|
|
|
|
|
|
|
+ static void start(
|
|
|
|
|
+ {MemberPageType? enterTyp = MemberPageType.universalAccessEnter}) {
|
|
|
|
|
+ Get.toNamed(RoutePath.member, arguments: enterTyp);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
@override
|
|
@@ -61,7 +63,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
|
|
|
|
|
@override
|
|
@override
|
|
|
Widget buildBody(BuildContext context) {
|
|
Widget buildBody(BuildContext context) {
|
|
|
- return PopScope(
|
|
|
|
|
|
|
+ return PopScope(
|
|
|
canPop: false,
|
|
canPop: false,
|
|
|
onPopInvokedWithResult: (bool didPop, dynamic result) async {
|
|
onPopInvokedWithResult: (bool didPop, dynamic result) async {
|
|
|
if (didPop) {
|
|
if (didPop) {
|
|
@@ -70,9 +72,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
controller.onPopBack();
|
|
controller.onPopBack();
|
|
|
},
|
|
},
|
|
|
child: Stack(
|
|
child: Stack(
|
|
|
- children: [buildScrollView(), buildHeadBar(),
|
|
|
|
|
- buildMemberBottomView()
|
|
|
|
|
- ],
|
|
|
|
|
|
|
+ children: [buildScrollView(), buildHeadBar(), buildMemberBottomView()],
|
|
|
),
|
|
),
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
@@ -106,6 +106,8 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
child: Stack(
|
|
child: Stack(
|
|
|
children: [
|
|
children: [
|
|
|
Container(
|
|
Container(
|
|
|
|
|
+ margin:
|
|
|
|
|
+ EdgeInsets.only(left: 2.w, right: 2.w, top: 2.w),
|
|
|
decoration: BoxDecoration(
|
|
decoration: BoxDecoration(
|
|
|
borderRadius: BorderRadius.only(
|
|
borderRadius: BorderRadius.only(
|
|
|
topLeft: Radius.circular(20.w),
|
|
topLeft: Radius.circular(20.w),
|
|
@@ -115,7 +117,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
.provider(),
|
|
.provider(),
|
|
|
)),
|
|
)),
|
|
|
width: double.infinity,
|
|
width: double.infinity,
|
|
|
- height: 174,
|
|
|
|
|
|
|
+ height: 174.w,
|
|
|
),
|
|
),
|
|
|
Container(
|
|
Container(
|
|
|
//width: double.infinity,
|
|
//width: double.infinity,
|
|
@@ -129,7 +131,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
children: [
|
|
children: [
|
|
|
SizedBox(height: 15.w),
|
|
SizedBox(height: 15.w),
|
|
|
buildUserInfoView(),
|
|
buildUserInfoView(),
|
|
|
- SizedBox(height: 23.w),
|
|
|
|
|
|
|
+ SizedBox(height: 12.w),
|
|
|
buildGoodsList(),
|
|
buildGoodsList(),
|
|
|
SizedBox(height: 12.w),
|
|
SizedBox(height: 12.w),
|
|
|
buildPayWayView(),
|
|
buildPayWayView(),
|
|
@@ -191,17 +193,17 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- widgets.add(Row(
|
|
|
|
|
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
- children: rowItems,
|
|
|
|
|
|
|
+ widgets.add(Container(
|
|
|
|
|
+ margin: EdgeInsets.only(left: 16.w, right: 16.w),
|
|
|
|
|
+ child: Row(
|
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
+ children: rowItems,
|
|
|
|
|
+ ),
|
|
|
));
|
|
));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return Container(
|
|
|
|
|
- padding: EdgeInsets.symmetric(horizontal: 14.w),
|
|
|
|
|
- child: Column(
|
|
|
|
|
- children: widgets,
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ return Column(
|
|
|
|
|
+ children: widgets,
|
|
|
);
|
|
);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
@@ -215,16 +217,21 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
},
|
|
},
|
|
|
child: Container(
|
|
child: Container(
|
|
|
height: 96.w,
|
|
height: 96.w,
|
|
|
|
|
+ margin: EdgeInsets.only(left: 12.w, right: 16.w),
|
|
|
padding: EdgeInsets.only(left: 17.w),
|
|
padding: EdgeInsets.only(left: 17.w),
|
|
|
decoration: BoxDecoration(
|
|
decoration: BoxDecoration(
|
|
|
image: DecorationImage(
|
|
image: DecorationImage(
|
|
|
- image: isSelected ? Assets.images.iconMemberSpecialProductsSelect.provider() : Assets.images.iconMemberSpecialProductsNormal.provider(),
|
|
|
|
|
- fit: BoxFit.cover
|
|
|
|
|
|
|
+ image: isSelected
|
|
|
|
|
+ ? Assets.images.iconMemberSpecialProductsSelect.provider()
|
|
|
|
|
+ : Assets.images.iconMemberSpecialProductsNormal.provider(),
|
|
|
|
|
+ fit: BoxFit.fill,
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|
|
|
child: Column(
|
|
child: Column(
|
|
|
children: [
|
|
children: [
|
|
|
- SizedBox(height: 29.w,),
|
|
|
|
|
|
|
+ SizedBox(
|
|
|
|
|
+ height: 29.w,
|
|
|
|
|
+ ),
|
|
|
Row(
|
|
Row(
|
|
|
children: [
|
|
children: [
|
|
|
Column(
|
|
Column(
|
|
@@ -239,19 +246,15 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
children: [
|
|
children: [
|
|
|
TextSpan(
|
|
TextSpan(
|
|
|
text: '¥',
|
|
text: '¥',
|
|
|
- style: TextStyle(
|
|
|
|
|
- fontSize: 16.sp, height: 1)),
|
|
|
|
|
- TextSpan(
|
|
|
|
|
|
|
+ style: TextStyle(fontSize: 16.sp, height: 1)),
|
|
|
|
|
+ TextSpan(
|
|
|
text: goodsInfo.amount.divideBy100(),
|
|
text: goodsInfo.amount.divideBy100(),
|
|
|
style: TextStyle(
|
|
style: TextStyle(
|
|
|
fontSize: 28.sp,
|
|
fontSize: 28.sp,
|
|
|
height: 1,
|
|
height: 1,
|
|
|
//fontFamily: FontFamily.oppoSans
|
|
//fontFamily: FontFamily.oppoSans
|
|
|
- )
|
|
|
|
|
- )
|
|
|
|
|
- ]
|
|
|
|
|
- )
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ ))
|
|
|
|
|
+ ])),
|
|
|
Text('¥${goodsInfo.originalAmount.divideBy100()}',
|
|
Text('¥${goodsInfo.originalAmount.divideBy100()}',
|
|
|
style: TextStyle(
|
|
style: TextStyle(
|
|
|
decoration: TextDecoration.lineThrough,
|
|
decoration: TextDecoration.lineThrough,
|
|
@@ -261,7 +264,9 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
color: ColorName.black40))
|
|
color: ColorName.black40))
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
|
- SizedBox(width: 22.24.w,),
|
|
|
|
|
|
|
+ SizedBox(
|
|
|
|
|
+ width: 22.24.w,
|
|
|
|
|
+ ),
|
|
|
Column(
|
|
Column(
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
children: [
|
|
children: [
|
|
@@ -278,7 +283,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
Text(
|
|
Text(
|
|
|
goodsInfo.description ?? "",
|
|
goodsInfo.description ?? "",
|
|
|
style: TextStyle(
|
|
style: TextStyle(
|
|
|
- fontSize: 11.sp ,
|
|
|
|
|
|
|
+ fontSize: 11.sp,
|
|
|
color: "#9191BA".color,
|
|
color: "#9191BA".color,
|
|
|
fontWeight: FontWeight.bold),
|
|
fontWeight: FontWeight.bold),
|
|
|
),
|
|
),
|
|
@@ -299,77 +304,96 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
onTap: () {
|
|
onTap: () {
|
|
|
controller.onGoodsItemClick(goodsInfo);
|
|
controller.onGoodsItemClick(goodsInfo);
|
|
|
},
|
|
},
|
|
|
- child: Container(
|
|
|
|
|
|
|
+ child: SizedBox(
|
|
|
|
|
+ width: double.infinity,
|
|
|
height: 62.w,
|
|
height: 62.w,
|
|
|
- padding: EdgeInsets.only(left: 16.w,right: 12.w),
|
|
|
|
|
- decoration: BoxDecoration(
|
|
|
|
|
- image: DecorationImage(
|
|
|
|
|
- image: isSelected ? Assets.images.iconMemberOrdinaryProductSelect.provider() : Assets.images.iconMemberOrdinaryProductNormal.provider(),
|
|
|
|
|
- fit: BoxFit.cover
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- child: Column(
|
|
|
|
|
|
|
+ child: Stack(
|
|
|
children: [
|
|
children: [
|
|
|
- SizedBox(height: 15.w,),
|
|
|
|
|
- Row(
|
|
|
|
|
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
- children: [
|
|
|
|
|
- Column(
|
|
|
|
|
- crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
- children: [
|
|
|
|
|
- Text(
|
|
|
|
|
- goodsInfo.name,
|
|
|
|
|
- style: TextStyle(
|
|
|
|
|
- fontSize: 12.sp,
|
|
|
|
|
- color: "#333333".color,
|
|
|
|
|
- fontWeight: FontWeight.bold),
|
|
|
|
|
- ),
|
|
|
|
|
- //SizedBox(height: 6.w,),
|
|
|
|
|
- Text(
|
|
|
|
|
- goodsInfo.description ?? "",
|
|
|
|
|
- style: TextStyle(
|
|
|
|
|
- fontSize: 10.sp ,
|
|
|
|
|
- color: ColorName.black40,
|
|
|
|
|
- fontWeight: FontWeight.bold),
|
|
|
|
|
- ),
|
|
|
|
|
- ],
|
|
|
|
|
- ),
|
|
|
|
|
- //SizedBox(width: 22.24.w,),
|
|
|
|
|
- Column(
|
|
|
|
|
- crossAxisAlignment: CrossAxisAlignment.end,
|
|
|
|
|
- children: [
|
|
|
|
|
- RichText(
|
|
|
|
|
- text: TextSpan(
|
|
|
|
|
|
|
+ Container(
|
|
|
|
|
+ width: double.infinity,
|
|
|
|
|
+ height: double.infinity,
|
|
|
|
|
+ decoration: BoxDecoration(
|
|
|
|
|
+ gradient: LinearGradient(
|
|
|
|
|
+ colors: ['#FFFFFF'.color, '#F3EAFF'.color],
|
|
|
|
|
+ begin: Alignment.topLeft,
|
|
|
|
|
+ end: Alignment.bottomRight,
|
|
|
|
|
+ stops: const [0.4, 1.0]),
|
|
|
|
|
+ borderRadius: BorderRadius.circular(12.w),
|
|
|
|
|
+ border: Border.all(
|
|
|
|
|
+ color: isSelected ? '#7A13C6'.color : '#F1E6FF'.color,
|
|
|
|
|
+ width: isSelected ? 2.5.w : 1.w,
|
|
|
|
|
+ ))),
|
|
|
|
|
+ Container(
|
|
|
|
|
+ padding: EdgeInsets.only(left: 16.w, right: 12.w),
|
|
|
|
|
+ child: Column(
|
|
|
|
|
+ children: [
|
|
|
|
|
+ SizedBox(
|
|
|
|
|
+ height: 15.w,
|
|
|
|
|
+ ),
|
|
|
|
|
+ Row(
|
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
+ children: [
|
|
|
|
|
+ Column(
|
|
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
+ children: [
|
|
|
|
|
+ Text(
|
|
|
|
|
+ goodsInfo.name,
|
|
|
style: TextStyle(
|
|
style: TextStyle(
|
|
|
- color: isSelected
|
|
|
|
|
- ? '#FF5656'.color
|
|
|
|
|
- : "#323133".color,
|
|
|
|
|
|
|
+ fontSize: 12.sp,
|
|
|
|
|
+ color: "#333333".color,
|
|
|
fontWeight: FontWeight.bold),
|
|
fontWeight: FontWeight.bold),
|
|
|
- children: [
|
|
|
|
|
- TextSpan(
|
|
|
|
|
- text: '¥',
|
|
|
|
|
- style: TextStyle(
|
|
|
|
|
- color: isSelected? "#FF5656".color : ColorName.black80,
|
|
|
|
|
- fontSize: 11.sp, height: 1)),
|
|
|
|
|
- TextSpan(
|
|
|
|
|
- text: goodsInfo.amount.divideBy100(),
|
|
|
|
|
|
|
+ ),
|
|
|
|
|
+ //SizedBox(height: 6.w,),
|
|
|
|
|
+ Text(
|
|
|
|
|
+ goodsInfo.description ?? "",
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 10.sp,
|
|
|
|
|
+ color: ColorName.black40,
|
|
|
|
|
+ fontWeight: FontWeight.bold),
|
|
|
|
|
+ ),
|
|
|
|
|
+ ],
|
|
|
|
|
+ ),
|
|
|
|
|
+ //SizedBox(width: 22.24.w,),
|
|
|
|
|
+ Column(
|
|
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.end,
|
|
|
|
|
+ children: [
|
|
|
|
|
+ RichText(
|
|
|
|
|
+ text: TextSpan(
|
|
|
style: TextStyle(
|
|
style: TextStyle(
|
|
|
- fontSize: 20.sp,
|
|
|
|
|
- height: 1,))
|
|
|
|
|
- ]
|
|
|
|
|
- )
|
|
|
|
|
- ),
|
|
|
|
|
- Text('¥${goodsInfo.originalAmount.divideBy100()}',
|
|
|
|
|
- style: TextStyle(
|
|
|
|
|
- decoration: TextDecoration.lineThrough,
|
|
|
|
|
- decorationColor: ColorName.black30,
|
|
|
|
|
- decorationThickness: 1.0,
|
|
|
|
|
- fontSize: 10.sp,
|
|
|
|
|
- color: ColorName.black30))
|
|
|
|
|
- ],
|
|
|
|
|
- ),
|
|
|
|
|
- ],
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ color: isSelected
|
|
|
|
|
+ ? '#FF5656'.color
|
|
|
|
|
+ : "#323133".color,
|
|
|
|
|
+ fontWeight: FontWeight.bold),
|
|
|
|
|
+ children: [
|
|
|
|
|
+ TextSpan(
|
|
|
|
|
+ text: '¥',
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ color: isSelected
|
|
|
|
|
+ ? "#FF5656".color
|
|
|
|
|
+ : ColorName.black80,
|
|
|
|
|
+ fontSize: 11.sp,
|
|
|
|
|
+ height: 1)),
|
|
|
|
|
+ TextSpan(
|
|
|
|
|
+ text: goodsInfo.amount.divideBy100(),
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 20.sp,
|
|
|
|
|
+ height: 1,
|
|
|
|
|
+ ))
|
|
|
|
|
+ ])),
|
|
|
|
|
+ Text('¥${goodsInfo.originalAmount.divideBy100()}',
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ decoration: TextDecoration.lineThrough,
|
|
|
|
|
+ decorationColor: ColorName.black30,
|
|
|
|
|
+ decorationThickness: 1.0,
|
|
|
|
|
+ fontSize: 10.sp,
|
|
|
|
|
+ color: ColorName.black30))
|
|
|
|
|
+ ],
|
|
|
|
|
+ ),
|
|
|
|
|
+ ],
|
|
|
|
|
+ ),
|
|
|
|
|
+ ],
|
|
|
|
|
+ ),
|
|
|
|
|
+ )
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|
|
@@ -512,8 +536,9 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
return Row(
|
|
return Row(
|
|
|
children: [
|
|
children: [
|
|
|
SizedBox(width: 18.w),
|
|
SizedBox(width: 18.w),
|
|
|
- controller.isLogin ? ClipOval(
|
|
|
|
|
- child: Container(
|
|
|
|
|
|
|
+ controller.isLogin
|
|
|
|
|
+ ? ClipOval(
|
|
|
|
|
+ child: Container(
|
|
|
width: 32.w,
|
|
width: 32.w,
|
|
|
height: 32.w,
|
|
height: 32.w,
|
|
|
child: CachedNetworkImage(
|
|
child: CachedNetworkImage(
|
|
@@ -521,7 +546,8 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
fit: BoxFit.cover,
|
|
fit: BoxFit.cover,
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|
|
|
- ) : Assets.images.iconMemberAvatar.image(width: 32.w, height: 32.w),
|
|
|
|
|
|
|
+ )
|
|
|
|
|
+ : Assets.images.iconMemberAvatar.image(width: 32.w, height: 32.w),
|
|
|
SizedBox(width: 7.w),
|
|
SizedBox(width: 7.w),
|
|
|
Column(
|
|
Column(
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
@@ -547,15 +573,16 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
children: [
|
|
children: [
|
|
|
// 左侧内容:会员等级描述 + VIP卡片描述
|
|
// 左侧内容:会员等级描述 + VIP卡片描述
|
|
|
Visibility(
|
|
Visibility(
|
|
|
- visible: MemberStatusInfo.getLevelDesc(controller.memberStatusInfo).isNotEmpty,
|
|
|
|
|
|
|
+ visible: MemberStatusInfo.getLevelDesc(
|
|
|
|
|
+ controller.memberStatusInfo)
|
|
|
|
|
+ .isNotEmpty,
|
|
|
child: Text(
|
|
child: Text(
|
|
|
- MemberStatusInfo.getLevelDesc(controller.memberStatusInfo),
|
|
|
|
|
|
|
+ MemberStatusInfo.getLevelDesc(
|
|
|
|
|
+ controller.memberStatusInfo),
|
|
|
style: TextStyle(
|
|
style: TextStyle(
|
|
|
fontSize: 11.sp,
|
|
fontSize: 11.sp,
|
|
|
fontWeight: FontWeight.w700,
|
|
fontWeight: FontWeight.w700,
|
|
|
- color: '#9144F8'.color
|
|
|
|
|
- )
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ color: '#9144F8'.color)),
|
|
|
),
|
|
),
|
|
|
buildMemberCardVipDesc(),
|
|
buildMemberCardVipDesc(),
|
|
|
Spacer(),
|
|
Spacer(),
|
|
@@ -581,7 +608,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
return Obx(() {
|
|
return Obx(() {
|
|
|
String desc = '';
|
|
String desc = '';
|
|
|
if (!controller.isLogin) {
|
|
if (!controller.isLogin) {
|
|
|
- if ((controller.memberStatusInfo?.endTimestamp?? 0) > 0) {
|
|
|
|
|
|
|
+ if ((controller.memberStatusInfo?.endTimestamp ?? 0) > 0) {
|
|
|
desc =
|
|
desc =
|
|
|
'${DateUtil.fromMillisecondsSinceEpoch('yyyy-MM-dd', controller.memberStatusInfo?.endTimestamp ?? 0)} ${StringName.memberCardExpirationDesc}';
|
|
'${DateUtil.fromMillisecondsSinceEpoch('yyyy-MM-dd', controller.memberStatusInfo?.endTimestamp ?? 0)} ${StringName.memberCardExpirationDesc}';
|
|
|
} else {
|
|
} else {
|
|
@@ -598,32 +625,40 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
'${DateUtil.fromMillisecondsSinceEpoch('yyyy-MM-dd', controller.memberStatusInfo?.endTimestamp ?? 0)} ${StringName.memberCardExpirationDesc}';
|
|
'${DateUtil.fromMillisecondsSinceEpoch('yyyy-MM-dd', controller.memberStatusInfo?.endTimestamp ?? 0)} ${StringName.memberCardExpirationDesc}';
|
|
|
}
|
|
}
|
|
|
return Text(desc,
|
|
return Text(desc,
|
|
|
- style: TextStyle(fontSize: 11.sp, color: ColorName.black50,fontWeight: FontWeight.w400));
|
|
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 11.sp,
|
|
|
|
|
+ color: ColorName.black50,
|
|
|
|
|
+ fontWeight: FontWeight.w400));
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Widget buildHeadBar() {
|
|
Widget buildHeadBar() {
|
|
|
return Column(
|
|
return Column(
|
|
|
children: [
|
|
children: [
|
|
|
- SizedBox(height: MediaQuery.of(Get.context!).padding.top,),
|
|
|
|
|
|
|
+ SizedBox(
|
|
|
|
|
+ height: MediaQuery.of(Get.context!).padding.top,
|
|
|
|
|
+ ),
|
|
|
Container(
|
|
Container(
|
|
|
width: double.infinity,
|
|
width: double.infinity,
|
|
|
height: 56.w,
|
|
height: 56.w,
|
|
|
child: Row(
|
|
child: Row(
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
children: [
|
|
children: [
|
|
|
- SizedBox(width: 15.w,),
|
|
|
|
|
|
|
+ SizedBox(
|
|
|
|
|
+ width: 15.w,
|
|
|
|
|
+ ),
|
|
|
GestureDetector(
|
|
GestureDetector(
|
|
|
onTap: () => controller.onPopBack(),
|
|
onTap: () => controller.onPopBack(),
|
|
|
child: Assets.images.iconMemberVipBack
|
|
child: Assets.images.iconMemberVipBack
|
|
|
.image(width: 26.w, height: 26..w),
|
|
.image(width: 26.w, height: 26..w),
|
|
|
),
|
|
),
|
|
|
- SizedBox(width: 10.w,),
|
|
|
|
|
|
|
+ SizedBox(
|
|
|
|
|
+ width: 10.w,
|
|
|
|
|
+ ),
|
|
|
Container(
|
|
Container(
|
|
|
width: MediaQuery.of(Get.context!).size.width - 51.w,
|
|
width: MediaQuery.of(Get.context!).size.width - 51.w,
|
|
|
padding: EdgeInsets.only(right: 12.w),
|
|
padding: EdgeInsets.only(right: 12.w),
|
|
|
- child: buildVerticalSlideshowWidget()
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ child: buildVerticalSlideshowWidget()),
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
|
)
|
|
)
|
|
@@ -632,53 +667,62 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Widget buildVerticalSlideshowWidget() {
|
|
Widget buildVerticalSlideshowWidget() {
|
|
|
- return Row(
|
|
|
|
|
|
|
+ return Row(
|
|
|
children: [
|
|
children: [
|
|
|
- Expanded(child: Center(
|
|
|
|
|
- child: Container(
|
|
|
|
|
- width: 192.w,
|
|
|
|
|
- height: 26.w,
|
|
|
|
|
- decoration: BoxDecoration(
|
|
|
|
|
- color: ColorName.black40,
|
|
|
|
|
- borderRadius: BorderRadius.circular(87.w),
|
|
|
|
|
|
|
+ Expanded(
|
|
|
|
|
+ child: Center(
|
|
|
|
|
+ child: Container(
|
|
|
|
|
+ width: 192.w,
|
|
|
|
|
+ height: 26.w,
|
|
|
|
|
+ decoration: BoxDecoration(
|
|
|
|
|
+ color: ColorName.black40,
|
|
|
|
|
+ borderRadius: BorderRadius.circular(87.w),
|
|
|
|
|
+ ),
|
|
|
|
|
+ child: Center(
|
|
|
|
|
+ child: AnimatedSwitcherWidget(
|
|
|
|
|
+ controller: controller.switcherController)),
|
|
|
),
|
|
),
|
|
|
- child: Center(
|
|
|
|
|
- child: AnimatedSwitcherWidget(
|
|
|
|
|
- controller: controller.switcherController)),
|
|
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|
|
|
- ),
|
|
|
|
|
- if (Platform.isAndroid) SizedBox(width: 40.w,),
|
|
|
|
|
- if (Platform.isIOS) Obx(() {
|
|
|
|
|
- return Visibility(
|
|
|
|
|
- visible: Platform.isIOS && controller.accountRepository.isLogin.value,
|
|
|
|
|
- child: Row(
|
|
|
|
|
- children: [
|
|
|
|
|
- SizedBox(width: 26.w,),
|
|
|
|
|
- GestureDetector(
|
|
|
|
|
- onTap: controller.clickRecoverSubscribe,
|
|
|
|
|
- child: Container(
|
|
|
|
|
- height: 26.w,
|
|
|
|
|
- decoration: BoxDecoration(
|
|
|
|
|
- color: ColorName.black40,
|
|
|
|
|
- borderRadius: BorderRadius.circular(26.w / 2.0),
|
|
|
|
|
- ),
|
|
|
|
|
- padding: EdgeInsets.symmetric(horizontal: 10.w),
|
|
|
|
|
- child: Row(
|
|
|
|
|
- children: [
|
|
|
|
|
- Assets.images.iconAppleRecoverSubscribe.image(width: 14.w,height: 14.w),
|
|
|
|
|
- Text(StringName.appleRecoverSubscribeTxt,
|
|
|
|
|
- style: TextStyle(
|
|
|
|
|
- fontSize: 11.sp,
|
|
|
|
|
- color: ColorName.white,
|
|
|
|
|
- fontWeight: FontWeight.w500)),
|
|
|
|
|
- ],
|
|
|
|
|
- ),
|
|
|
|
|
|
|
+ if (Platform.isAndroid)
|
|
|
|
|
+ SizedBox(
|
|
|
|
|
+ width: 40.w,
|
|
|
|
|
+ ),
|
|
|
|
|
+ if (Platform.isIOS)
|
|
|
|
|
+ Obx(() {
|
|
|
|
|
+ return Visibility(
|
|
|
|
|
+ visible: Platform.isIOS &&
|
|
|
|
|
+ controller.accountRepository.isLogin.value,
|
|
|
|
|
+ child: Row(
|
|
|
|
|
+ children: [
|
|
|
|
|
+ SizedBox(
|
|
|
|
|
+ width: 26.w,
|
|
|
),
|
|
),
|
|
|
- )
|
|
|
|
|
- ],
|
|
|
|
|
- ));
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ GestureDetector(
|
|
|
|
|
+ onTap: controller.clickRecoverSubscribe,
|
|
|
|
|
+ child: Container(
|
|
|
|
|
+ height: 26.w,
|
|
|
|
|
+ decoration: BoxDecoration(
|
|
|
|
|
+ color: ColorName.black40,
|
|
|
|
|
+ borderRadius: BorderRadius.circular(26.w / 2.0),
|
|
|
|
|
+ ),
|
|
|
|
|
+ padding: EdgeInsets.symmetric(horizontal: 10.w),
|
|
|
|
|
+ child: Row(
|
|
|
|
|
+ children: [
|
|
|
|
|
+ Assets.images.iconAppleRecoverSubscribe
|
|
|
|
|
+ .image(width: 14.w, height: 14.w),
|
|
|
|
|
+ Text(StringName.appleRecoverSubscribeTxt,
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 11.sp,
|
|
|
|
|
+ color: ColorName.white,
|
|
|
|
|
+ fontWeight: FontWeight.w500)),
|
|
|
|
|
+ ],
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
|
|
+ )
|
|
|
|
|
+ ],
|
|
|
|
|
+ ));
|
|
|
|
|
+ })
|
|
|
],
|
|
],
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
@@ -751,22 +795,27 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
children: [
|
|
children: [
|
|
|
for (int index = 0; index < controller.evaluateList.length; index++)
|
|
for (int index = 0; index < controller.evaluateList.length; index++)
|
|
|
buildUserEvaluateItem(controller.evaluateList.value[index],
|
|
buildUserEvaluateItem(controller.evaluateList.value[index],
|
|
|
- index == controller.evaluateList.value.length - 1,index == 0)
|
|
|
|
|
|
|
+ index == controller.evaluateList.value.length - 1, index == 0)
|
|
|
],
|
|
],
|
|
|
);
|
|
);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Widget buildUserEvaluateItem(GoodsEvaluateInfo item, bool isLast,bool isFirst) {
|
|
|
|
|
|
|
+ Widget buildUserEvaluateItem(
|
|
|
|
|
+ GoodsEvaluateInfo item, bool isLast, bool isFirst) {
|
|
|
return Container(
|
|
return Container(
|
|
|
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
|
child: Column(
|
|
child: Column(
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
children: [
|
|
children: [
|
|
|
- SizedBox(height: isFirst? 16.w : 20.w),
|
|
|
|
|
|
|
+ SizedBox(height: isFirst ? 16.w : 20.w),
|
|
|
Row(
|
|
Row(
|
|
|
children: [
|
|
children: [
|
|
|
- CachedNetworkImage(imageUrl: item.avatar,width: 34.w, height: 34.w,),
|
|
|
|
|
|
|
+ CachedNetworkImage(
|
|
|
|
|
+ imageUrl: item.avatar,
|
|
|
|
|
+ width: 34.w,
|
|
|
|
|
+ height: 34.w,
|
|
|
|
|
+ ),
|
|
|
SizedBox(width: 10.w),
|
|
SizedBox(width: 10.w),
|
|
|
// 使用 Expanded 确保 Column 占据剩余宽度
|
|
// 使用 Expanded 确保 Column 占据剩余宽度
|
|
|
Expanded(
|
|
Expanded(
|
|
@@ -777,21 +826,31 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
children: [
|
|
children: [
|
|
|
Text(
|
|
Text(
|
|
|
item.name,
|
|
item.name,
|
|
|
- style: TextStyle(fontSize: 14.sp, color: "#333333".color, fontWeight: FontWeight.w400),
|
|
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 14.sp,
|
|
|
|
|
+ color: "#333333".color,
|
|
|
|
|
+ fontWeight: FontWeight.w400),
|
|
|
),
|
|
),
|
|
|
Spacer(),
|
|
Spacer(),
|
|
|
- Assets.images.iconMemberCommentVerySatisfied.image(width: 16.w,height: 16.w),
|
|
|
|
|
|
|
+ Assets.images.iconMemberCommentVerySatisfied
|
|
|
|
|
+ .image(width: 16.w, height: 16.w),
|
|
|
SizedBox(width: 5.w),
|
|
SizedBox(width: 5.w),
|
|
|
Text(
|
|
Text(
|
|
|
item.description,
|
|
item.description,
|
|
|
- style: TextStyle(fontSize: 11.sp, color: "#DC8514".color, fontWeight: FontWeight.w500),
|
|
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 11.sp,
|
|
|
|
|
+ color: "#DC8514".color,
|
|
|
|
|
+ fontWeight: FontWeight.w500),
|
|
|
)
|
|
)
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
|
SizedBox(height: 5.w),
|
|
SizedBox(height: 5.w),
|
|
|
Text(
|
|
Text(
|
|
|
item.content,
|
|
item.content,
|
|
|
- style: TextStyle(fontSize: 11.sp, color: '#333333'.color, fontWeight: FontWeight.w400),
|
|
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 11.sp,
|
|
|
|
|
+ color: '#333333'.color,
|
|
|
|
|
+ fontWeight: FontWeight.w400),
|
|
|
maxLines: null, // 允许无限行数
|
|
maxLines: null, // 允许无限行数
|
|
|
softWrap: true, // 允许文本换行
|
|
softWrap: true, // 允许文本换行
|
|
|
)
|
|
)
|
|
@@ -823,8 +882,13 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
children: [
|
|
children: [
|
|
|
SizedBox(height: 12.w),
|
|
SizedBox(height: 12.w),
|
|
|
Text("支付方式",
|
|
Text("支付方式",
|
|
|
- style: TextStyle(fontSize: 16.sp, color: ColorName.black,fontWeight: FontWeight.bold)),
|
|
|
|
|
- SizedBox(height: 5.w,),
|
|
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 16.sp,
|
|
|
|
|
+ color: ColorName.black,
|
|
|
|
|
+ fontWeight: FontWeight.bold)),
|
|
|
|
|
+ SizedBox(
|
|
|
|
|
+ height: 5.w,
|
|
|
|
|
+ ),
|
|
|
for (PayItemBean item in controller.payItemList)
|
|
for (PayItemBean item in controller.payItemList)
|
|
|
buildPayWayItem(item)
|
|
buildPayWayItem(item)
|
|
|
],
|
|
],
|
|
@@ -846,19 +910,23 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
children: [
|
|
children: [
|
|
|
Image.asset(
|
|
Image.asset(
|
|
|
getPaymentIconPath(
|
|
getPaymentIconPath(
|
|
|
- payMethod:item.payMethod, payPlatform: item.payPlatform),
|
|
|
|
|
|
|
+ payMethod: item.payMethod, payPlatform: item.payPlatform),
|
|
|
width: 20.w,
|
|
width: 20.w,
|
|
|
height: 20.w),
|
|
height: 20.w),
|
|
|
SizedBox(width: 8.w),
|
|
SizedBox(width: 8.w),
|
|
|
Text(item.title,
|
|
Text(item.title,
|
|
|
- style: TextStyle(fontSize: 12.sp, color: ColorName.black,fontWeight: FontWeight.w400)),
|
|
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 12.sp,
|
|
|
|
|
+ color: ColorName.black,
|
|
|
|
|
+ fontWeight: FontWeight.w400)),
|
|
|
Spacer(),
|
|
Spacer(),
|
|
|
Image.asset(
|
|
Image.asset(
|
|
|
isSelected
|
|
isSelected
|
|
|
? Assets.images.iconCbSelected.path
|
|
? Assets.images.iconCbSelected.path
|
|
|
: Assets.images.iconCbUnSelect.path,
|
|
: Assets.images.iconCbUnSelect.path,
|
|
|
width: 16.w,
|
|
width: 16.w,
|
|
|
- height: 16.w),],
|
|
|
|
|
|
|
+ height: 16.w),
|
|
|
|
|
+ ],
|
|
|
),
|
|
),
|
|
|
);
|
|
);
|
|
|
}),
|
|
}),
|