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, this.rankMax = 0, this.rank = 0, this.createTime = "", }); String topLeft = ""; String levelText = ""; @override Widget build(BuildContext context) { List 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, ), ], ), ], ), ), ], ), ); } }