From cf3ad579d330d622858288a3ef98ba9bb19847dc Mon Sep 17 00:00:00 2001 From: userGyl Date: Thu, 22 Jan 2026 17:29:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0ui=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ln_jq_app/assets/images/android_apk_img.png | Bin 0 -> 23609 bytes ln_jq_app/assets/images/ic_jqz@2x.png | Bin 0 -> 2416 bytes ln_jq_app/assets/images/ic_label@2x.png | Bin 0 -> 638 bytes ln_jq_app/assets/images/ic_logo@2x.png | Bin 0 -> 1461 bytes ln_jq_app/assets/images/ic_pj@2x.png | Bin 0 -> 779 bytes ln_jq_app/assets/images/ic_px@2x.png | Bin 0 -> 1081 bytes ln_jq_app/assets/images/ic_user_logo@2x.png | Bin 0 -> 9548 bytes ln_jq_app/assets/images/ic_wz@2x.png | Bin 0 -> 1156 bytes ln_jq_app/lib/common/login_util.dart | 5 + ln_jq_app/lib/common/styles/theme.dart | 2 +- .../lib/pages/c_page/mine/controller.dart | 6 +- ln_jq_app/lib/pages/c_page/mine/view.dart | 682 +++++++++++------- ln_jq_app/lib/pages/login/view.dart | 2 +- ln_jq_app/lib/pages/url_host/controller.dart | 2 + 14 files changed, 435 insertions(+), 264 deletions(-) create mode 100644 ln_jq_app/assets/images/android_apk_img.png create mode 100644 ln_jq_app/assets/images/ic_jqz@2x.png create mode 100644 ln_jq_app/assets/images/ic_label@2x.png create mode 100644 ln_jq_app/assets/images/ic_logo@2x.png create mode 100644 ln_jq_app/assets/images/ic_pj@2x.png create mode 100644 ln_jq_app/assets/images/ic_px@2x.png create mode 100644 ln_jq_app/assets/images/ic_user_logo@2x.png create mode 100644 ln_jq_app/assets/images/ic_wz@2x.png diff --git a/ln_jq_app/assets/images/android_apk_img.png b/ln_jq_app/assets/images/android_apk_img.png new file mode 100644 index 0000000000000000000000000000000000000000..ef191ca300cbf7e44ee082a04b70eb05342e5242 GIT binary patch literal 23609 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 literal 0 HcmV?d00001 diff --git a/ln_jq_app/assets/images/ic_jqz@2x.png b/ln_jq_app/assets/images/ic_jqz@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1b991e423b44db2346e27221ed08ded6601b64e1 GIT binary patch literal 2416 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 Y0Md1}DYFG~RsaA107*qoM6N<$f<-hVkN^Mx literal 0 HcmV?d00001 diff --git a/ln_jq_app/assets/images/ic_logo@2x.png b/ln_jq_app/assets/images/ic_logo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..99b6db0100c6cfdd7a181ed1ebdc40ff484dcc44 GIT binary patch literal 1461 zcmV;m1xosfP)eo3YbFu8yM99a{?z>Rwg8Xf{Ot=3f=&Y14%#_5CoV)Jsd^~z?>VH z^A@lS_P8=80Za}6N-(^fhMe+b7fg{4@?%RCuIqjEa)E zvuBTqh}Em*%cdrCjuk!Ct55{sf}ke)YK&X z{rzL&+tyZzjfs(;dwN)hCo7wZKbY{=;yI`76R%}u$-uyXjvdU;mw*6+Fa4P|n~sgA zFt@$E-AqYfZ?3>*c#LXLyv0#pFK23NwL5OxHhFq8rx>oo<>ls6DaWetaM_9+g1U0L z{e*^wnihL*CV};)$9p8>+?*Wk=2I6I6=}P-w^#D>^0aNSSfr`BSx%ikt?+7QrjAkB zk&qw@kVD;t4J5GKWsDk*R#!`#)2aQt)6!(=GVWKy#f?dlh9y#3R;FLg;LyKPaPb2f zidZDWk1muMkxRv$ylYMv30Pc)$H1p6DlF8#;NW170^C#|pE#l8(VI4@r8gZlU!4=@ z^nMv$y+DT6Sj3i{<^A+b4e`e>zhoFZh0RIA^yU>5=%=GEb=NKq3f`}#@6TJ3*Kkb5 z_!E5Z9Lap@d8*zBA^~rwT6QkK8Q`(onZhrv;d$3?S2>0y!dJr_(=I&!p7j2H(=?^* znRE%5cDJ_O6%y!kcTo2}c2!4?(5(>^6eLyHAEh_}wuAfSr$sX)`Tau*hc0|55tfJK zoy1H9>-u0B}r?d6`H!7%Fp;m-+dvg9$2DlL+K%bHYiHCqunnRzFY2W74-4r zyxuKUm-+EDf^m;TO6QnUlFyq2{tfzR$L+7;}EiIWDti z%p55$!k+d1etv%a@Qxg47!!&2tKp8%aU9jtEVJ*E^!3}dJ%(auZ>|92ym1D3b+R}e z<6+OFTP^K#*Na^)g^D@(_30zF77BS zE|&cV4k+Z|YsksOAgxH>txxk9+F(lr0O#JVnCa${do1gufdqRhC$##v^DCICiUmMsYM0#hZd9pmby zdT0W)5a6qrDiUnI1wDG$%Y+93I+4(d@iBl)h2f3}Yd!9&?NM+P0Y;HXmMfrF0DLtV zZc7F+s{~kqnp|C|p5l`LQ!rrw;6JM*QU%}tA;Mfc<~)cRHh?zF(K03hGZm9Nfi&3j zfER#jfUn8@D@xr7KbtaV9_Azi-SCYo{{a91|Nq=U7Bm0=00v1!K~w_(;!-8M5p1I1 P00000NkvXXu0mjfW^=iW literal 0 HcmV?d00001 diff --git a/ln_jq_app/assets/images/ic_pj@2x.png b/ln_jq_app/assets/images/ic_pj@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6e42e6436b5d4d7f7aa054e10aea6adc60b0beea GIT binary patch literal 779 zcmV+m1N8ifP)sJPf{hk()q#RwBUmbE=Yfr#f`W~O zU}2$!pv8d}S6EnBSlstzZ;nj}mz`{qP405MKW}C-dGG&cj?K(uOVabd4JBYZlW`T? z>NqaLZzo7C%)kw5zra)QsN;AJzaK!(i2}}1c>=bAzL;F)d|mZG5(Jy=HIDU`w%L^F4 z*NgHXVAj(#%s}5}U=M^Zw1EBOn8;%Og$@$&D|poczL4V-D76>?j*4rL(x5eT@a1}J zk~lE}UK4N;xZG$OZ^`ovlv<2{e?+?k+E^on6dFzc}{&cCT< zz@N~UjD!2prtyJ1yFjVM%z$s;i$wHo+%!&*$I}Pg`W7SL6QTSm#Wim3%Rf$%B}Tw^ z0=g$Xjc*#}c~72FixFTj-@pcL8V;8EN)aodG+^5u1_5o4cs}1S1NjkYyFSc7+apds zcWbzj7N>2?UV>K7GokBUnKTrKA5g#;xW0$R4s zqnXe)t(WtH0{mcbl4vi$Ur>iB!jX1K>=N9vZFR(!qbC+}UQ&QT6>){aHn5{2j`EzN zf=g{5S3k(P39?KzHT&4NY92XWBa)ock9?Ff_J>*(xLdoN%G00960CVfmD00006Nkl-@m)cK1wSk+1l`#zIt3P*6}%FrbB~XfUE8Rw6c987nO;Y(+)I6pD?Y zV8B2G0}5K&dxb@G|Cqw!;BI&Py}f;#JN7OTcQ;YlW!}G;_vX!SW{-P2uR?$L^Y;U= zENho(S&vM+@yWF8Hi{Hn+NN!PLb+eJ?R`IcL54=4UazmWEc>|-&l2$o5*a0;DoW8* zC81H22^M;3T8&rA78>$Y2JuHmMn>7Fz7e7WgXAmAlRe6oVIT$q=mf!|*yFLSGQ}iY zD@^~#jHn4Z?SDPj;iU=_UyCM3l{{N&ZY--wSlNyUJcyR43eg9Mr|72MfD{0;(KskV zJ21IROs7289d}*#gJBq*F0;_OdIU|EexWwcV36#VrYK{#ug=7xkCOP$<@R*rX~?} zj~f6%T$zP@GkAqjCIImK1#KBK%?0iDCJAW_ycUWg^;;~ZVjxn1#DN=ida6MYnA38hO6o#E%T}so;d6Q~5lVfMrU3}|Tqwv1qzun! z1uNZ}wmm^42a|mzyqEOjP6`0Nb06a)JV7eNcTBtSpuTRMy17YRvc-D(n{1;hoVLZZ z8dD^6U#mhAVGfCcXL_vL6aWZ1NPip#2$f~S5F~PvgYYdbxZ5a&Uv$H1@8S95*ttu{ z_;sqrcz4iW4+20)e|!drolr8TY_s=Q?A`mSM_=0?-S5$C>s#X9BsM|DddfvgE~f4)R)eujp?2wYFne z`%?hJ7XB{$9{>OV|NmYR-rxWL00v1!K~w_(u~PPMZg-DJ00000NkvXXu0mjf4Gr~A literal 0 HcmV?d00001 diff --git a/ln_jq_app/assets/images/ic_user_logo@2x.png b/ln_jq_app/assets/images/ic_user_logo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..182717fe357b1cef86b966165e2773dc2e6c1ff3 GIT binary patch literal 9548 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 W!it^2l79050000 { id: 'mine', builder: (_) { return Scaffold( - backgroundColor: Colors.grey[100], + backgroundColor: const Color.fromRGBO(247, 249, 251, 1), body: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(12.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - _buildUserInfoCard(), - const SizedBox(height: 5), - _buildDriverScoreCard(), - const SizedBox(height: 5), - _buildMonthlyRecordCard(), - const SizedBox(height: 5), - _buildTipsCard(), - const SizedBox(height: 20), - _buildLogoutButton(), - const SizedBox(height: 20), - ], - ), + child: Column( + children: [ + _buildUserInfoCard(), + const SizedBox(height: 8), + // 新 UI 模块开始 + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20.0), + child: Column( + children: [ + _buildWalletCard(), + SizedBox(height: 16.h), + _buildGridMenu(), + SizedBox(height: 16.h), + _buildRecommendCard(context), + SizedBox(height: 8.h), + _buildSafetyReminderCard(), + SizedBox(height: 24.h), + _buildLogoutButton(), + ], + ), + ), + // 新 UI 模块结束 + ], ), ), ); @@ -43,79 +50,127 @@ class MinePage extends GetView { ); } - /// 1. 构建顶部用户信息卡片 + /// 构建顶部用户信息卡片 Widget _buildUserInfoCard() { return Card( - elevation: 2, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + elevation: 1, + color: Colors.white, + margin: EdgeInsets.zero, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(20), + bottomRight: Radius.circular(20), + ), + ), child: Column( children: [ Padding( - padding: const EdgeInsets.all(16.0), + padding: EdgeInsets.only(left: 20.w, right: 20.w, bottom: 16, top: 40), + // 增加了顶部 padding 适配状态栏 child: Row( children: [ - const CircleAvatar( - radius: 25, - backgroundColor: Colors.blue, - child: Icon(Icons.person, color: Colors.white, size: 40), + Stack( + children: [ + CircleAvatar( + radius: 25, + backgroundColor: Colors.white, + child: LoginUtil.getAssImg('ic_user_logo@2x'), + ), + Positioned( + right: 0, + bottom: 0, + child: SizedBox( + height: 16.h, + width: 16.w, + child: LoginUtil.getAssImg('ic_logo@2x'), + ), + ), + ], ), - const SizedBox(width: 16), + SizedBox(width: 8.w), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - "${StorageService.to.name}", - style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold), + Row( + children: [ + Text( + "${StorageService.to.name}", + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + ), + ), + SizedBox(width: 8.w), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 2, + ), + decoration: BoxDecoration( + color: const Color.fromRGBO(236, 255, 234, 1), // 极浅绿色背景 + border: Border.all(color: const Color(0xFFB7E19F)), // 边框 + borderRadius: BorderRadius.circular(12), + ), + child: const Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.eco, size: 12, color: Color(0xFF52C41A)), + // 叶子图标 + SizedBox(width: 4), + Text( + "绿色先锋", + style: TextStyle( + color: Color(0xFF52C41A), + fontSize: 10, + ), + ), + ], + ), + ), + ], ), const SizedBox(height: 4), Text( - "${StorageService.to.phone}", - style: TextStyle(color: Colors.grey, fontSize: 11), - ), - const SizedBox(height: 4), - Text( - StorageService.to.hasVehicleInfo ? "已绑定车辆" : '未绑定车辆', - style: TextStyle(color: Colors.orange, fontSize: 12), + "羚牛ID:${StorageService.to.phone}", + style: const TextStyle(color: Colors.grey, fontSize: 11), ), ], ), ), IconButton( onPressed: () { - // 跳转消息中心 Get.to(() => const MessagePage()); }, - // 这里的 style 是为了模拟你图片里的灰色圆形背景 style: IconButton.styleFrom( backgroundColor: Colors.grey[100], padding: const EdgeInsets.all(8), ), icon: Badge( - // label: Text('3'), // 如果你想显示数字,就加 label smallSize: 8, - // 红点的大小 - backgroundColor: controller.isNotice ? Colors.red : Colors.white, - // 红点颜色 - child: Icon( + backgroundColor: controller.isNotice + ? Colors.red + : Colors.transparent, + child: const Icon( Icons.notifications_outlined, color: Colors.black87, - size: 25, + size: 30, ), ), ), ], ), ), - const Divider(height: 1), Padding( - padding: const EdgeInsets.symmetric(vertical: 16.0), + padding: EdgeInsets.only(left: 20.w, right: 20.w, bottom: 20), child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - _buildStatItem(controller.violationTotal, '违章总数'), - _buildStatItem(controller.violationScore, '扣分总数'), - _buildStatItem(controller.violationDispose, '已处理'), + _buildModernStatItem('服务天数', 'service days', '156', ''), + const SizedBox(width: 8), + _buildModernStatItem('准时率', 'Punctuality', controller.rate, ''), + const SizedBox(width: 8), + _buildModernStatItem('司机评分', 'Driver rating', controller.rating, ''), ], ), ), @@ -124,242 +179,351 @@ class MinePage extends GetView { ); } - // 用户信息卡片中的小统计项 - Widget _buildStatItem(String value, String label) { + // 统计项 + Widget _buildModernStatItem(String title, String subtitle, String value, String unit) { + return Expanded( + child: Container( + padding: const EdgeInsets.all(12.0), + decoration: BoxDecoration( + color: const Color(0xFFF8F9FA), + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: const TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Colors.black87, + ), + ), + Text(subtitle, style: const TextStyle(fontSize: 9, color: Colors.grey)), + const SizedBox(height: 8), + Row( + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + children: [ + Text( + value, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: Colors.black87, + ), + ), + Text(unit, style: const TextStyle(fontSize: 10, color: Colors.black54)), + ], + ), + ], + ), + ), + ); + } + + /// 我的钱包卡片 + Widget _buildWalletCard() { + return Card( + elevation: 1, + color: Colors.white, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Row( + children: [ + const Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "我的钱包", + style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold), + ), + Text("User wallet", style: TextStyle(fontSize: 12, color: Colors.grey)), + ], + ), + ), + Text( + "¥ 0,00元", + style: TextStyle( + color: Colors.green[700], + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ); + } + + /// 2x2 功能网格菜单 + Widget _buildGridMenu() { return Column( children: [ - Text(value, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), - const SizedBox(height: 4), - Text(label, style: const TextStyle(color: Colors.grey, fontSize: 12)), + Row( + children: [ + _buildGridItem(Icons.person_search_outlined, "客服评价", "3项可评"), + const SizedBox(width: 19), + _buildGridItem( + Icons.assignment_late_outlined, + "违章处理", + "${controller.historyBreakRules}项待办", + countColor: Colors.red, + ), + ], + ), + const SizedBox(height: 16), + Row( + children: [ + _buildGridItem(Icons.book_outlined, "安全培训", "0个待看"), + const SizedBox(width: 19), + _buildGridItem( + Icons.verified_user_outlined, + "诚信加氢值", + "845", + isSpecial: true, + backgroundColor: const Color(0xFF006633), + ), + ], + ), ], ); } - /// 2. 构建驾驶得分卡片 - Widget _buildDriverScoreCard() { - return Card( - elevation: 2, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - child: Padding( - padding: const EdgeInsets.all(16.0), + Widget _buildGridItem( + IconData icon, + String title, + String subtitle, { + Color? countColor, + bool isSpecial = false, + Color? backgroundColor, + }) { + return Expanded( + child: Container( + height: 100, + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: isSpecial ? backgroundColor : Colors.white, + borderRadius: BorderRadius.circular(16), + ), child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, children: [ - const Text( - '驾驶得分', - style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), + Icon(icon, color: isSpecial ? Colors.white : Colors.black87, size: 28), + const SizedBox(height: 8), + Text( + title, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + color: isSpecial ? Colors.white : Colors.black87, + ), ), - const Text('本月表现', style: TextStyle(fontSize: 12, color: Colors.grey)), - const SizedBox(height: 20), - Center( - child: SizedBox( - width: 100, - height: 100, - child: Stack( - fit: StackFit.expand, + Text( + subtitle, + style: TextStyle( + fontSize: 12, + color: isSpecial + ? Colors.white.withOpacity(0.8) + : (countColor ?? Colors.grey), + ), + ), + ], + ), + ), + ); + } + + /// 我要推荐卡片 + Widget _buildRecommendCard(BuildContext context) { + return Card( + elevation: 0, + color: Colors.white, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + children: [ + const Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - CircularProgressIndicator( - value: (double.tryParse(controller.rating) ?? 0) / 10, - strokeWidth: 8, - backgroundColor: Colors.grey[200], - valueColor: AlwaysStoppedAnimation(Colors.blue), + Text( + "我要推荐", + style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold), ), - Center( - child: Text( - controller.rating, - style: TextStyle( - fontSize: 32, - fontWeight: FontWeight.bold, - color: Colors.blue, - ), + Text("Recommend", style: TextStyle(fontSize: 12, color: Colors.grey)), + ], + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text("累计奖励(积分)", style: TextStyle(fontSize: 11, color: Colors.grey)), + Text( + "0,00", + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: Colors.green, ), ), ], ), - ), - ), - const SizedBox(height: 20), - _buildScoreDetailRow(Icons.directions_car, '安全驾驶', '无违章记录', true), - const Divider(), - _buildScoreDetailRow(Icons.timer, '准时率', '100%准时到达', true), - const Divider(), - _buildScoreDetailRow(Icons.thumb_up, '服务质量', '用户满意度高', true), - const Divider(), - Padding( - padding: const EdgeInsets.only(top: 12.0), - child: Row( - children: [ - const Text( - '优秀驾驶员', - style: TextStyle(fontSize: 14, fontWeight: FontWeight.w500), - ), - const Spacer(), - Container( - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), - decoration: BoxDecoration( - color: Colors.blue, - borderRadius: BorderRadius.circular(16), - ), - child: const Text( - 'A+', - style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold), - ), - ), - ], - ), - ), - ], - ), - ), - ); - } - - // 驾驶得分卡片中的评分项 - Widget _buildScoreDetailRow( - IconData icon, - String title, - String subtitle, - bool isCompleted, - ) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 8.0), - child: Row( - children: [ - CircleAvatar( - radius: 20, - backgroundColor: Colors.blue.withOpacity(0.1), - child: Icon(icon, color: Colors.blue, size: 24), - ), - const SizedBox(width: 12), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - title, - style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold), - ), - Text(subtitle, style: const TextStyle(fontSize: 12, color: Colors.grey)), ], ), - ), - if (isCompleted) const Icon(Icons.check_circle, color: Colors.blue), - ], - ), - ); - } - - /// 3. 构建本月记录卡片 - Widget _buildMonthlyRecordCard() { - return Card( - elevation: 2, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - child: Padding( - padding: const EdgeInsets.all(16.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text( - '本月记录', - style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), + const SizedBox(height: 16), + ElevatedButton( + onPressed: () { + if (GetPlatform.isIOS) { + // 跳转到 iOS 应用商店 (这里使用一个通用的应用商店链接模板,请确保替换为正式的 AppID) + openWebPage("https://apps.apple.com/cn/app/羚牛氢能/6756245815"); + } else if (GetPlatform.isAndroid) { + // Android 弹出二维码图片 + _showAndroidDownloadDialog(context); + } + }, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFF006633), + foregroundColor: Colors.white, + minimumSize: const Size(double.infinity, 48), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24)), + elevation: 0, + ), + child: const Text( + "下载推荐", + style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), + ), ), - const SizedBox(height: 8), - _buildRecordRow(Icons.rate_review, '加氢预约践行率', controller.rate), - const Divider(), - _buildRecordRow( - Icons.report_problem_outlined, - '违章', - "${controller.historyBreakRules}起", - ), - const Divider(), - _buildRecordRow(Icons.car_crash_outlined, '交通事故', "${controller.accident}起"), ], ), ), ); } - // 本月记录中的列表项 - Widget _buildRecordRow(IconData icon, String title, String value) { - return ListTile( - contentPadding: EdgeInsets.zero, - leading: CircleAvatar( - radius: 20, - backgroundColor: Colors.blue.withOpacity(0.1), - child: Icon(icon, color: Colors.blue, size: 24), + /// Android 端下载二维码弹窗 + void _showAndroidDownloadDialog(BuildContext context) { + Get.dialog( + Center( + child: Container( + width: 280.w, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + children: [ + const Text( + "扫描二维码下载", + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: Colors.black87, + ), + ), + const SizedBox(height: 20), + // 使用 LoginUtil.getAssImg 加载你的图片 android_apk_img.png + SizedBox( + width: 180.w, + height: 180.w, + child: LoginUtil.getAssImg('android_apk_img'), + ), + const SizedBox(height: 16), + const Text( + "请让被推荐人扫描上方二维码进行下载安装", + textAlign: TextAlign.center, + style: TextStyle(fontSize: 13, color: Colors.grey), + ), + ], + ), + ), + const Divider(height: 1), + TextButton( + onPressed: () => Get.back(), + style: TextButton.styleFrom(minimumSize: const Size(double.infinity, 50)), + child: const Text( + "确 定", + style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), + ), + ), + ], + ), + ), ), - title: Text(title, style: const TextStyle(fontSize: 14)), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text(value, style: const TextStyle(color: AppTheme.themeColor, fontSize: 14)), - ], - ), - onTap: () { - // TODO: 处理点击事件 - }, ); } - /// 4. 构建提示信息卡片 - Widget _buildTipsCard() { - return Card( - elevation: 2, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - child: Padding( - padding: const EdgeInsets.all(16.0), - child: Column( - children: [ - _buildInfoItem(Icons.info_outline, '保持良好的驾驶习惯,提高安全评分'), - const SizedBox(height: 10), - _buildInfoItem(Icons.rule, '遵守交通规则,避免违章扣分'), - const SizedBox(height: 10), - _buildInfoItem(Icons.headset_mic_outlined, '如有疑问请联系客服: 400-021-1773'), - const SizedBox(height: 10), - Row( - children: [ - Icon(Icons.verified_outlined, color: Colors.blue, size: 20), - const SizedBox(width: 10), - Expanded( - child: FutureBuilder( - future: getVersion(), - builder: (context, snapshot) { - // 判断是否还在加载 - if (snapshot.connectionState == ConnectionState.waiting) { - return const Text(""); - } - - // 如果加载完成且有数据 - if (snapshot.hasData) { - return TextX.labelSmall( - "当前版本: ${snapshot.data}", - color: Colors.black54, - ); - } - - // 错误处理 + /// 安全提醒卡片 + Widget _buildSafetyReminderCard() { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: const Color.fromRGBO(242, 249, 248, 1), // 极浅绿色背景 + borderRadius: BorderRadius.circular(16), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon(Icons.info_outline, color: Colors.green[700], size: 24), + const SizedBox(width: 8), + Text( + "安全提醒", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.green[900], + ), + ), + ], + ), + const SizedBox(height: 12), + Text( + "请保持良好驾驶习惯,提高安全评分,遵守交通规则,避免违章扣分。", + style: TextStyle(fontSize: 13, color: Colors.green[800], height: 1.5), + ), + const SizedBox(height: 8), + Text( + "如有疑问请联系客服:400-021-1773", + style: TextStyle(fontSize: 13, color: Colors.green[800]), + ), + Row( + children: [ + Expanded( + child: FutureBuilder( + future: getVersion(), + builder: (context, snapshot) { + // 判断是否还在加载 + if (snapshot.connectionState == ConnectionState.waiting) { return const Text(""); - }, - ), - ), - ], - ), - ], - ), - ), - ); - } + } - // 提示信息卡片中的列表项 - Widget _buildInfoItem(IconData icon, String text) { - return Row( - children: [ - Icon(icon, color: Colors.blue, size: 20), - const SizedBox(width: 10), - Expanded( - child: Text(text, style: const TextStyle(fontSize: 12, color: Colors.black54)), - ), - ], + // 如果加载完成且有数据 + if (snapshot.hasData) { + return TextX.labelSmall( + "当前版本: ${snapshot.data}", + color: Colors.green[800], + ); + } + + // 错误处理 + return const Text(""); + }, + ), + ), + ], + ), + ], + ), ); } @@ -369,7 +533,7 @@ class MinePage extends GetView { controller.logout(); }, style: ElevatedButton.styleFrom( - backgroundColor: Colors.red[400], + backgroundColor: Color.fromRGBO(204, 52, 46, 1), foregroundColor: Colors.white, minimumSize: const Size(double.infinity, 48), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24)), diff --git a/ln_jq_app/lib/pages/login/view.dart b/ln_jq_app/lib/pages/login/view.dart index 32a05d7..93d5b54 100644 --- a/ln_jq_app/lib/pages/login/view.dart +++ b/ln_jq_app/lib/pages/login/view.dart @@ -89,7 +89,7 @@ class _LoginPageState extends State with SingleTickerProviderStateMix margin: EdgeInsets.all(15), elevation: 4, child: Container( - height: cLogin ? 290.h : 365.h, + height: cLogin ? 295.h : 370.h, padding: EdgeInsets.all(15), child: Column( children: [ diff --git a/ln_jq_app/lib/pages/url_host/controller.dart b/ln_jq_app/lib/pages/url_host/controller.dart index 4f1d78a..b76241f 100644 --- a/ln_jq_app/lib/pages/url_host/controller.dart +++ b/ln_jq_app/lib/pages/url_host/controller.dart @@ -10,12 +10,14 @@ class UrlHostController extends GetxController { // 预设的域名列表 final List presetUrls = [ 'https://beta-esg.api.lnh2e.com/', // 测试环境 + 'http://47.101.201.13:8443/api/', // 测试环境 'http://192.168.110.44:8080/', // 沈辰本地 'http://192.168.110.222:8080/', // 何斐本地 ]; final List urlNames = [ '测试环境', + '线上环境', '沈辰本地环境', '何斐本地环境', ];