|
@@ -1,5 +1,6 @@
|
|
|
import 'dart:io';
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
|
|
+import 'package:cached_network_image/cached_network_image.dart';
|
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
|
import 'package:flutter/gestures.dart';
|
|
import 'package:flutter/gestures.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/material.dart';
|
|
@@ -22,6 +23,7 @@ import '../../resource/string.gen.dart';
|
|
|
import '../../router/app_pages.dart';
|
|
import '../../router/app_pages.dart';
|
|
|
import '../../utils/date_util.dart';
|
|
import '../../utils/date_util.dart';
|
|
|
import '../../widget/animated_switcher_widget.dart';
|
|
import '../../widget/animated_switcher_widget.dart';
|
|
|
|
|
+import 'member_discount_countdown_widget.dart';
|
|
|
import 'member_evaluate_bean.dart';
|
|
import 'member_evaluate_bean.dart';
|
|
|
import 'member_header_cycle_widget.dart';
|
|
import 'member_header_cycle_widget.dart';
|
|
|
|
|
|
|
@@ -89,7 +91,6 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
topRight: Radius.circular(20.w)),
|
|
topRight: Radius.circular(20.w)),
|
|
|
image: DecorationImage(
|
|
image: DecorationImage(
|
|
|
image: Assets.images.iconMemberVipMiddleBg.provider(),
|
|
image: Assets.images.iconMemberVipMiddleBg.provider(),
|
|
|
- fit: BoxFit.fill,
|
|
|
|
|
)
|
|
)
|
|
|
),
|
|
),
|
|
|
width: double.infinity,
|
|
width: double.infinity,
|
|
@@ -150,7 +151,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
SizedBox(height: 100.w)
|
|
SizedBox(height: 100.w)
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
|
- )
|
|
|
|
|
|
|
+ ),
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
|
)
|
|
)
|
|
@@ -468,9 +469,18 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
Widget buildUserInfoView() {
|
|
Widget buildUserInfoView() {
|
|
|
return Row(
|
|
return Row(
|
|
|
children: [
|
|
children: [
|
|
|
- SizedBox(width: 20.w),
|
|
|
|
|
- Assets.images.iconMemberAvatar.image(width: 40.w, height: 40.w),
|
|
|
|
|
- SizedBox(width: 10.w),
|
|
|
|
|
|
|
+ SizedBox(width: 18.w),
|
|
|
|
|
+ controller.isLogin ? ClipOval(
|
|
|
|
|
+ child: Container(
|
|
|
|
|
+ width: 32.w,
|
|
|
|
|
+ height: 32.w,
|
|
|
|
|
+ child: CachedNetworkImage(
|
|
|
|
|
+ imageUrl: controller.memberStatusInfo?.avatar ?? "",
|
|
|
|
|
+ fit: BoxFit.cover,
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
|
|
+ ) : Assets.images.iconMemberAvatar.image(width: 32.w, height: 32.w),
|
|
|
|
|
+ SizedBox(width: 7.w),
|
|
|
Column(
|
|
Column(
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
children: [
|
|
children: [
|
|
@@ -487,32 +497,62 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
fontWeight: FontWeight.bold)),
|
|
fontWeight: FontWeight.bold)),
|
|
|
);
|
|
);
|
|
|
}),
|
|
}),
|
|
|
- buildMemberCardVipDesc()
|
|
|
|
|
|
|
+ Container(
|
|
|
|
|
+ height: 13.w,
|
|
|
|
|
+ child: Row(
|
|
|
|
|
+ // 主轴默认左对齐,通过Spacer推挤右侧内容
|
|
|
|
|
+ children: [
|
|
|
|
|
+ // 左侧内容:会员等级描述 + VIP卡片描述
|
|
|
|
|
+ Visibility(
|
|
|
|
|
+ visible: MemberStatusInfo.getLevelDesc(controller.memberStatusInfo).isNotEmpty,
|
|
|
|
|
+ child: Text(
|
|
|
|
|
+ MemberStatusInfo.getLevelDesc(controller.memberStatusInfo),
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontSize: 11.sp,
|
|
|
|
|
+ fontWeight: FontWeight.w700,
|
|
|
|
|
+ color: '#9144F8'.color
|
|
|
|
|
+ )
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
|
|
+ buildMemberCardVipDesc(),
|
|
|
|
|
+ Container(
|
|
|
|
|
+ child: MemberDiscountCountdownWidget(
|
|
|
|
|
+ onExpired: () {
|
|
|
|
|
+ print("sssfsdfs");
|
|
|
|
|
+ controller.isShowCount.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ ),
|
|
|
|
|
+ )
|
|
|
|
|
+ ],
|
|
|
|
|
+ ),
|
|
|
|
|
+ )
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
|
- Spacer(),
|
|
|
|
|
- Container(
|
|
|
|
|
- decoration: BoxDecoration(
|
|
|
|
|
- color: '#272F51'.color,
|
|
|
|
|
- border: Border.all(color: '#99CAB0F0'.color, width: 1.w),
|
|
|
|
|
- borderRadius: BorderRadius.circular(100.w),
|
|
|
|
|
- ),
|
|
|
|
|
- padding: EdgeInsets.symmetric(horizontal: 18.w, vertical: 6.w),
|
|
|
|
|
- child: Obx(() {
|
|
|
|
|
- return Text(
|
|
|
|
|
- MemberStatusInfo.getLevelDesc(controller.memberStatusInfo),
|
|
|
|
|
- style: TextStyle(fontSize: 12.sp, color: '#D2CCFF'.color));
|
|
|
|
|
- })),
|
|
|
|
|
- SizedBox(width: 18.w)
|
|
|
|
|
|
|
+ SizedBox(width: 20.w)
|
|
|
],
|
|
],
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
|
|
+ // Spacer(),
|
|
|
|
|
+ // Container(
|
|
|
|
|
+ // decoration: BoxDecoration(
|
|
|
|
|
+ // color: '#272F51'.color,
|
|
|
|
|
+ // border: Border.all(color: '#99CAB0F0'.color, width: 1.w),
|
|
|
|
|
+ // borderRadius: BorderRadius.circular(100.w),
|
|
|
|
|
+ // ),
|
|
|
|
|
+ // padding: EdgeInsets.symmetric(horizontal: 18.w, vertical: 6.w),
|
|
|
|
|
+ // child: Obx(() {
|
|
|
|
|
+ // return Text(
|
|
|
|
|
+ // MemberStatusInfo.getLevelDesc(controller.memberStatusInfo),
|
|
|
|
|
+ // style: TextStyle(fontSize: 12.sp, color: '#D2CCFF'.color));
|
|
|
|
|
+ // })),
|
|
|
|
|
|
|
|
Widget buildMemberCardVipDesc() {
|
|
Widget buildMemberCardVipDesc() {
|
|
|
return Obx(() {
|
|
return Obx(() {
|
|
|
String desc = '';
|
|
String desc = '';
|
|
|
if (!controller.isLogin) {
|
|
if (!controller.isLogin) {
|
|
|
- desc = StringName.memberCardNoLoginDesc;
|
|
|
|
|
|
|
+ //desc = StringName.memberCardNoLoginDesc;
|
|
|
|
|
+ desc =
|
|
|
|
|
+ '${DateUtil.fromMillisecondsSinceEpoch('yyyy-MM-dd', controller.memberStatusInfo?.endTimestamp ?? 0)} ${StringName.memberCardExpirationDesc}';
|
|
|
} else if (controller.memberStatusInfo == null ||
|
|
} else if (controller.memberStatusInfo == null ||
|
|
|
controller.memberStatusInfo?.expired == true) {
|
|
controller.memberStatusInfo?.expired == true) {
|
|
|
desc = StringName.memberCardNoVipDesc;
|
|
desc = StringName.memberCardNoVipDesc;
|
|
@@ -521,7 +561,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
desc = StringName.memberCardPermanentVipDesc;
|
|
desc = StringName.memberCardPermanentVipDesc;
|
|
|
} else {
|
|
} else {
|
|
|
desc =
|
|
desc =
|
|
|
- '${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));
|