You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
261 lines
8.3 KiB
261 lines
8.3 KiB
import 'package:flutter/material.dart'; |
|
import 'package:huixiang/generated/l10n.dart'; |
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
|
class MineVipView extends StatelessWidget { |
|
final int vipLevel; |
|
final int curLevel; |
|
final int rankMax; |
|
final int rank; |
|
final String createTime; |
|
final double padding; |
|
|
|
MineVipView( |
|
this.vipLevel, { |
|
this.padding = 16, |
|
this.curLevel = 0, |
|
this.rankMax = 0, |
|
this.rank = 0, |
|
this.createTime = "", |
|
}); |
|
|
|
String topLeft = ""; |
|
String levelText = ""; |
|
|
|
@override |
|
Widget build(BuildContext context) { |
|
List<Color> linearColor = [ |
|
Color(0xFFD6F6F3), |
|
Color(0xFF86BEBA), |
|
]; |
|
Color levelColor = Color(0xFF558B87); |
|
Color textColor = Colors.white; |
|
|
|
if (curLevel == vipLevel) { |
|
topLeft = S.of(context).dangqiandengji; |
|
} else if (vipLevel < curLevel) { |
|
topLeft = S.of(context).shangyidengji; |
|
} else { |
|
topLeft = S.of(context).xiayidengji; |
|
} |
|
|
|
switch (vipLevel) { |
|
case 1: |
|
{ |
|
linearColor = [ |
|
Color(0xFFD6F6F3), |
|
Color(0xFF86BEBA), |
|
]; |
|
levelColor = Color(0xFF558B87); |
|
levelText = "LV1 ${S.of(context).qingtonghuiyuan}"; |
|
break; |
|
} |
|
case 2: |
|
{ |
|
linearColor = [ |
|
Color(0xFFF2F2F2), |
|
Color(0xFFBEBEBE), |
|
]; |
|
levelColor = Color(0xFF575757); |
|
textColor = Color(0xFF575757); |
|
levelText = "LV2 ${S.of(context).baiyinhuiyuan}"; |
|
break; |
|
} |
|
case 3: |
|
{ |
|
linearColor = [ |
|
Color(0xFFFEF5DC), |
|
Color(0xFFD1B97D), |
|
]; |
|
levelColor = Color(0xFFAE9B6D); |
|
levelText = "LV3 ${S.of(context).huangjinhuiyuan}"; |
|
break; |
|
} |
|
case 4: |
|
{ |
|
linearColor = [ |
|
Color(0xFFEEEEEF), |
|
Color(0xFFA999DB), |
|
]; |
|
levelColor = Color(0xFF887CB4); |
|
levelText = "LV4 ${S.of(context).zuanshihuiyuan}"; |
|
break; |
|
} |
|
case 5: |
|
{ |
|
linearColor = [ |
|
Color(0xFFEEEEEF), |
|
Color(0xFF000000), |
|
]; |
|
levelColor = Color(0xFF000000); |
|
levelText = "LV5 ${S.of(context).zhizunhuiyuan}"; |
|
break; |
|
} |
|
} |
|
return Container( |
|
margin: EdgeInsets.fromLTRB(padding.w, 16.h, padding.w, 8.h), |
|
width: MediaQuery.of(context).size.width - 32.w, |
|
height: 200.h, |
|
decoration: BoxDecoration( |
|
gradient: LinearGradient( |
|
colors: linearColor, |
|
begin: Alignment.topLeft, |
|
end: Alignment.bottomRight, |
|
), |
|
borderRadius: BorderRadius.circular(8), |
|
boxShadow: [ |
|
BoxShadow( |
|
color: Colors.black.withAlpha(12), |
|
offset: Offset(0, 3), |
|
blurRadius: 14, |
|
spreadRadius: 0, |
|
), |
|
], |
|
), |
|
child: Column( |
|
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|
children: [ |
|
Row( |
|
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|
children: [ |
|
Container( |
|
height: 95.h, |
|
child: Column( |
|
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|
crossAxisAlignment: CrossAxisAlignment.start, |
|
mainAxisSize: MainAxisSize.max, |
|
children: [ |
|
Container( |
|
padding: EdgeInsets.fromLTRB(9.w, 4.h, 8.w, 4.h), |
|
decoration: BoxDecoration( |
|
color: levelColor, |
|
borderRadius: BorderRadius.only( |
|
topLeft: Radius.circular(8), |
|
bottomRight: Radius.circular(8), |
|
), |
|
), |
|
child: Text( |
|
topLeft, |
|
style: TextStyle( |
|
fontSize: 12.sp, |
|
fontWeight: FontWeight.bold, |
|
color: Colors.white, |
|
), |
|
), |
|
), |
|
Container( |
|
margin: EdgeInsets.only(left: 13.w), |
|
child: Text( |
|
levelText, |
|
style: TextStyle( |
|
color: textColor, |
|
fontWeight: FontWeight.bold, |
|
fontSize: 23.sp, |
|
), |
|
), |
|
), |
|
], |
|
), |
|
), |
|
Container( |
|
margin: EdgeInsets.only(right: 11.w, bottom: 9.h), |
|
child: Image.asset( |
|
"assets/image/icon_mine_huixiang_logo.png", |
|
width: 86.w, |
|
height: 86.h, |
|
fit: BoxFit.contain, |
|
), |
|
), |
|
], |
|
), |
|
Container( |
|
margin: EdgeInsets.only(left: 13.w, right: 12.w, bottom: 12.h), |
|
child: Column( |
|
children: [ |
|
Row( |
|
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|
crossAxisAlignment: CrossAxisAlignment.baseline, |
|
textBaseline: TextBaseline.alphabetic, |
|
children: [ |
|
Expanded( |
|
child: Text( |
|
rank > rankMax |
|
? S.of(context).dangqiandengji |
|
: "${S.of(context).jifen_(rankMax - rank)} ${S.of(context).daoxiayidengji}", |
|
overflow: TextOverflow.ellipsis, |
|
style: TextStyle( |
|
color: textColor, |
|
fontWeight: FontWeight.w400, |
|
fontSize: 14.sp, |
|
), |
|
), |
|
flex: 1, |
|
), |
|
Text.rich( |
|
TextSpan( |
|
children: [ |
|
TextSpan( |
|
text: "$rank", |
|
style: TextStyle( |
|
fontSize: 26.sp, |
|
fontWeight: FontWeight.bold, |
|
color: textColor, |
|
), |
|
), |
|
if (rank <= rankMax) |
|
TextSpan( |
|
// string |
|
text: rankMax > 0 ? "/$rankMax" : "/0", |
|
style: TextStyle( |
|
fontSize: 14.sp, |
|
fontWeight: FontWeight.w400, |
|
color: textColor, |
|
), |
|
), |
|
], |
|
), |
|
), |
|
], |
|
), |
|
Container( |
|
margin: EdgeInsets.only(top: 12.h, bottom: 12.h), |
|
height: 8.h, |
|
child: ClipRRect( |
|
borderRadius: BorderRadius.circular(6.5), |
|
child: LinearProgressIndicator( |
|
value: rankMax > 0 ? rank / rankMax : 0, |
|
backgroundColor: Colors.white, |
|
color: levelColor, |
|
), |
|
), |
|
), |
|
Row( |
|
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|
crossAxisAlignment: CrossAxisAlignment.center, |
|
children: [ |
|
Text( |
|
S.of(context).kaitongriqi( |
|
(createTime != null && createTime != "") |
|
? createTime.split(" ")[0] |
|
: "$createTime"), |
|
style: TextStyle( |
|
color: textColor, |
|
fontWeight: FontWeight.w400, |
|
fontSize: 12.sp, |
|
), |
|
), |
|
Icon( |
|
Icons.qr_code, |
|
size: 24, |
|
color: Colors.white, |
|
), |
|
], |
|
), |
|
], |
|
), |
|
), |
|
], |
|
), |
|
); |
|
} |
|
}
|
|
|