|
|
@@ -16,16 +16,15 @@ import 'package:location/utils/common_expand.dart';
|
|
|
import 'package:location/utils/project_expand.dart';
|
|
|
import 'package:location/widget/auto_scroll_list_view.dart';
|
|
|
import '../../data/bean/goods_bean.dart';
|
|
|
+import '../../data/bean/goods_evaluate_info.dart';
|
|
|
import '../../data/bean/member_status_info.dart';
|
|
|
import '../../data/bean/pay_item_bean.dart';
|
|
|
import '../../data/consts/payment_type.dart';
|
|
|
-import '../../resource/fonts.gen.dart';
|
|
|
import '../../resource/string.gen.dart';
|
|
|
import '../../router/app_pages.dart';
|
|
|
import '../../utils/date_util.dart';
|
|
|
import '../../widget/animated_switcher_widget.dart';
|
|
|
import 'member_discount_countdown_widget.dart';
|
|
|
-import 'member_evaluate_bean.dart';
|
|
|
import 'member_header_cycle_widget.dart';
|
|
|
|
|
|
///进入会员类型
|
|
|
@@ -103,7 +102,6 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
borderRadius: BorderRadius.only(
|
|
|
topLeft: Radius.circular(20.w),
|
|
|
topRight: Radius.circular(20.w)),
|
|
|
- image: DecorationImage(image: Assets.images.iconMemberVipMiddleBg.provider())
|
|
|
),
|
|
|
child: Column(
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
@@ -113,42 +111,19 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
SizedBox(height: 23.w),
|
|
|
buildGoodsList(),
|
|
|
SizedBox(height: 12.w),
|
|
|
- buildPrivacyPolicyView(),
|
|
|
buildPayWayView(),
|
|
|
- SizedBox(height: 30.w),
|
|
|
- Padding(
|
|
|
- padding: EdgeInsets.only(left: 12.w),
|
|
|
- child: Text(StringName.memberEquityIntroduction,
|
|
|
- style: TextStyle(
|
|
|
- fontSize: 16.sp,
|
|
|
- color: ColorName.black90,
|
|
|
- fontWeight: FontWeight.bold)),
|
|
|
- ),
|
|
|
- SizedBox(height: 19.w),
|
|
|
- buildFunctionList(),
|
|
|
- SizedBox(height: 40.w),
|
|
|
+ SizedBox(height: 12.w),
|
|
|
Padding(
|
|
|
- padding: EdgeInsets.only(left: 12.w),
|
|
|
+ padding: EdgeInsets.only(left: 16.w),
|
|
|
child: Text(StringName.memberUserEvaluate,
|
|
|
style: TextStyle(
|
|
|
fontSize: 16.sp,
|
|
|
- color: ColorName.black90,
|
|
|
+ color: ColorName.black,
|
|
|
fontWeight: FontWeight.bold)),
|
|
|
),
|
|
|
- SizedBox(height: 8.w),
|
|
|
+ //SizedBox(height: 8.w),
|
|
|
buildUserEvaluateList(),
|
|
|
- SizedBox(height: 20.w),
|
|
|
- Container(
|
|
|
- padding: EdgeInsets.all(12.w),
|
|
|
- decoration: BoxDecoration(
|
|
|
- color: '#F7F7F7'.color,
|
|
|
- borderRadius: BorderRadius.circular(6.w)),
|
|
|
- margin: EdgeInsets.symmetric(horizontal: 12.w),
|
|
|
- child: Text(StringName.memberTips,
|
|
|
- style: TextStyle(
|
|
|
- fontSize: 12.sp, color: '#A7A7A7'.color)),
|
|
|
- ),
|
|
|
- SizedBox(height: 100.w)
|
|
|
+ SizedBox(height: 190.w + MediaQuery.of(Get.context!).padding.bottom)
|
|
|
],
|
|
|
),
|
|
|
),
|
|
|
@@ -159,76 +134,6 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
),
|
|
|
],
|
|
|
)
|
|
|
- /*Stack(
|
|
|
- children: [
|
|
|
- Assets.images.bgMemberHeader.image(width: double.infinity),
|
|
|
- SafeArea(
|
|
|
- child: Column(
|
|
|
- children: [
|
|
|
- SizedBox(height: 249.w + MediaQuery.of(Get.context!).padding.top),
|
|
|
- buildUserInfoView(),
|
|
|
- SizedBox(height: 26.w),
|
|
|
- Container(
|
|
|
- width: double.infinity,
|
|
|
- decoration: BoxDecoration(
|
|
|
- borderRadius: BorderRadius.only(
|
|
|
- topLeft: Radius.circular(14.w),
|
|
|
- topRight: Radius.circular(14.w)),
|
|
|
- gradient: LinearGradient(
|
|
|
- begin: Alignment.topCenter,
|
|
|
- end: Alignment.bottomCenter,
|
|
|
- stops: [0.0, 0.1],
|
|
|
- colors: ['#EFE9FF'.color, Colors.white])),
|
|
|
- child: Column(
|
|
|
- crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
- children: [
|
|
|
- SizedBox(height: 23.w),
|
|
|
- buildGoodsList(),
|
|
|
- SizedBox(height: 12.w),
|
|
|
- buildPrivacyPolicyView(),
|
|
|
- buildPayWayView(),
|
|
|
- SizedBox(height: 30.w),
|
|
|
- Padding(
|
|
|
- padding: EdgeInsets.only(left: 12.w),
|
|
|
- child: Text(StringName.memberEquityIntroduction,
|
|
|
- style: TextStyle(
|
|
|
- fontSize: 16.sp,
|
|
|
- color: ColorName.black90,
|
|
|
- fontWeight: FontWeight.bold)),
|
|
|
- ),
|
|
|
- SizedBox(height: 19.w),
|
|
|
- buildFunctionList(),
|
|
|
- SizedBox(height: 40.w),
|
|
|
- Padding(
|
|
|
- padding: EdgeInsets.only(left: 12.w),
|
|
|
- child: Text(StringName.memberUserEvaluate,
|
|
|
- style: TextStyle(
|
|
|
- fontSize: 16.sp,
|
|
|
- color: ColorName.black90,
|
|
|
- fontWeight: FontWeight.bold)),
|
|
|
- ),
|
|
|
- SizedBox(height: 8.w),
|
|
|
- buildUserEvaluateList(),
|
|
|
- SizedBox(height: 20.w),
|
|
|
- Container(
|
|
|
- padding: EdgeInsets.all(12.w),
|
|
|
- decoration: BoxDecoration(
|
|
|
- color: '#F7F7F7'.color,
|
|
|
- borderRadius: BorderRadius.circular(6.w)),
|
|
|
- margin: EdgeInsets.symmetric(horizontal: 12.w),
|
|
|
- child: Text(StringName.memberTips,
|
|
|
- style: TextStyle(
|
|
|
- fontSize: 12.sp, color: '#A7A7A7'.color)),
|
|
|
- ),
|
|
|
- SizedBox(height: 100.w)
|
|
|
- ],
|
|
|
- ),
|
|
|
- )
|
|
|
- ],
|
|
|
- ),
|
|
|
- )
|
|
|
- ],
|
|
|
- ),*/
|
|
|
),
|
|
|
buildHeadBar(),
|
|
|
buildMemberBottomView()
|
|
|
@@ -639,19 +544,6 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
],
|
|
|
);
|
|
|
}
|
|
|
- // 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() {
|
|
|
return Obx(() {
|
|
|
@@ -679,7 +571,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
return Obx(() {
|
|
|
return Stack(
|
|
|
children: [
|
|
|
- IgnorePointer(
|
|
|
+ /*IgnorePointer(
|
|
|
child: Container(
|
|
|
color: ColorName.colorPrimary.withOpacity(controller.toolBarOpacity),
|
|
|
child: SafeArea(
|
|
|
@@ -689,7 +581,7 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
),
|
|
|
),
|
|
|
),
|
|
|
- ),
|
|
|
+ ),*/
|
|
|
SafeArea(
|
|
|
child: SizedBox(
|
|
|
width: double.infinity,
|
|
|
@@ -821,47 +713,69 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
}
|
|
|
|
|
|
Widget buildUserEvaluateList() {
|
|
|
- return Column(
|
|
|
- children: [
|
|
|
- for (int index = 0; index < controller.evaluateList.length; index++)
|
|
|
- buildUserEvaluateItem(controller.evaluateList[index],
|
|
|
- index == controller.evaluateList.length - 1)
|
|
|
- ],
|
|
|
- );
|
|
|
+ return Obx(() {
|
|
|
+ return Column(
|
|
|
+ children: [
|
|
|
+ for (int index = 0; index < controller.evaluateList.length; index++)
|
|
|
+ buildUserEvaluateItem(controller.evaluateList.value[index],
|
|
|
+ index == controller.evaluateList.value.length - 1,index == 0)
|
|
|
+ ],
|
|
|
+ );
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
- Widget buildUserEvaluateItem(MemberEvaluateBean item, bool isLast) {
|
|
|
- return Column(
|
|
|
- crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
- children: [
|
|
|
- SizedBox(height: 20.w),
|
|
|
- Row(
|
|
|
- children: [
|
|
|
- SizedBox(width: 12.w),
|
|
|
- Image.asset(item.avatarPath, width: 24.w, height: 24.w),
|
|
|
- SizedBox(width: 8.w),
|
|
|
- Text(
|
|
|
- item.userName,
|
|
|
- style: TextStyle(fontSize: 14.sp, color: Colors.black),
|
|
|
- )
|
|
|
- ],
|
|
|
- ),
|
|
|
- SizedBox(height: 1.w),
|
|
|
- Padding(
|
|
|
- padding: EdgeInsets.only(left: 44.w, right: 12.w),
|
|
|
- child: Text(
|
|
|
- item.userEvaluate,
|
|
|
- style: TextStyle(fontSize: 14.sp, color: '#BF000000'.color),
|
|
|
- )),
|
|
|
- SizedBox(height: 20.w),
|
|
|
- Visibility(
|
|
|
- child: Container(
|
|
|
- margin: EdgeInsets.only(left: 26.w),
|
|
|
- width: 288.w,
|
|
|
- color: '#21000000'.color,
|
|
|
- height: 1.w),
|
|
|
- )
|
|
|
- ],
|
|
|
+ Widget buildUserEvaluateItem(GoodsEvaluateInfo item, bool isLast,bool isFirst) {
|
|
|
+ return Container(
|
|
|
+ padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
|
+ child: Column(
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
+ children: [
|
|
|
+ SizedBox(height: isFirst? 16.w : 20.w),
|
|
|
+ Row(
|
|
|
+ children: [
|
|
|
+ CachedNetworkImage(imageUrl: item.avatar,width: 34.w, height: 34.w,),
|
|
|
+ SizedBox(width: 10.w),
|
|
|
+ // 使用 Expanded 确保 Column 占据剩余宽度
|
|
|
+ Expanded(
|
|
|
+ child: Column(
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
+ children: [
|
|
|
+ Row(
|
|
|
+ children: [
|
|
|
+ Text(
|
|
|
+ item.name,
|
|
|
+ style: TextStyle(fontSize: 14.sp, color: "#333333".color, fontWeight: FontWeight.w400),
|
|
|
+ ),
|
|
|
+ Spacer(),
|
|
|
+ Assets.images.iconMemberCommentVerySatisfied.image(width: 16.w,height: 16.w),
|
|
|
+ SizedBox(width: 5.w),
|
|
|
+ Text(
|
|
|
+ item.description,
|
|
|
+ style: TextStyle(fontSize: 11.sp, color: "#DC8514".color, fontWeight: FontWeight.w500),
|
|
|
+ )
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ SizedBox(height: 5.w),
|
|
|
+ Text(
|
|
|
+ item.content,
|
|
|
+ style: TextStyle(fontSize: 11.sp, color: '#333333'.color, fontWeight: FontWeight.w400),
|
|
|
+ maxLines: null, // 允许无限行数
|
|
|
+ softWrap: true, // 允许文本换行
|
|
|
+ )
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ SizedBox(height: 20.w),
|
|
|
+ Visibility(
|
|
|
+ child: Container(
|
|
|
+ color: '#EEEEEE'.color,
|
|
|
+ height: 1.w,
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ],
|
|
|
+ ),
|
|
|
);
|
|
|
}
|
|
|
|
|
|
@@ -870,9 +784,14 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
return Visibility(
|
|
|
visible: Platform.isIOS ? false : controller.payItemList.isNotEmpty,
|
|
|
child: Container(
|
|
|
- margin: EdgeInsets.only(top: 7.w),
|
|
|
+ margin: EdgeInsets.symmetric(horizontal: 16.w),
|
|
|
child: Column(
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
children: [
|
|
|
+ SizedBox(height: 12.w),
|
|
|
+ Text("支付方式",
|
|
|
+ style: TextStyle(fontSize: 16.sp, color: ColorName.black,fontWeight: FontWeight.bold)),
|
|
|
+ SizedBox(height: 5.w,),
|
|
|
for (PayItemBean item in controller.payItemList)
|
|
|
buildPayWayItem(item)
|
|
|
],
|
|
|
@@ -889,27 +808,24 @@ class MemberPage extends BasePage<MemberController> {
|
|
|
child: Obx(() {
|
|
|
bool isSelected = controller.selectedPayWay?.id == item.id;
|
|
|
return Container(
|
|
|
- padding: EdgeInsets.symmetric(vertical: 10.w),
|
|
|
+ padding: EdgeInsets.symmetric(vertical: 12.w),
|
|
|
child: Row(
|
|
|
children: [
|
|
|
- SizedBox(width: 12.w),
|
|
|
Image.asset(
|
|
|
getPaymentIconPath(
|
|
|
- payMethod: item.payMethod, payPlatform: item.payPlatform),
|
|
|
- width: 24.w,
|
|
|
- height: 24.w),
|
|
|
- SizedBox(width: 6.w),
|
|
|
+ payMethod:item.payMethod, payPlatform: item.payPlatform),
|
|
|
+ width: 20.w,
|
|
|
+ height: 20.w),
|
|
|
+ SizedBox(width: 8.w),
|
|
|
Text(item.title,
|
|
|
- style: TextStyle(fontSize: 14.sp, color: ColorName.black90)),
|
|
|
+ style: TextStyle(fontSize: 12.sp, color: ColorName.black,fontWeight: FontWeight.w400)),
|
|
|
Spacer(),
|
|
|
Image.asset(
|
|
|
isSelected
|
|
|
? Assets.images.iconCbSelected.path
|
|
|
: Assets.images.iconCbUnSelect.path,
|
|
|
- width: 20.w,
|
|
|
- height: 20.w),
|
|
|
- SizedBox(width: 20.w),
|
|
|
- ],
|
|
|
+ width: 16.w,
|
|
|
+ height: 16.w),],
|
|
|
),
|
|
|
);
|
|
|
}),
|