153 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Dart
		
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Dart
		
	
	
| import 'package:flutter/material.dart';
 | |
| import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
 | |
| import 'package:qhd_prevention/customWidget/toast_util.dart';
 | |
| import 'package:qhd_prevention/pages/home/study/face_ecognition_page.dart';
 | |
| import 'package:qhd_prevention/pages/login_page.dart';
 | |
| import 'package:qhd_prevention/pages/mine/mine_first_sign_page.dart';
 | |
| import 'package:qhd_prevention/pages/mine/mine_set_pwd_page.dart';
 | |
| import 'package:qhd_prevention/pages/my_appbar.dart';
 | |
| import 'package:qhd_prevention/services/auth_service.dart';
 | |
| import 'package:qhd_prevention/tools/h_colors.dart';
 | |
| import 'package:qhd_prevention/tools/update/update_dialogs.dart';
 | |
| 
 | |
| import '../../tools/tools.dart';
 | |
| 
 | |
| class MineSetPage extends StatefulWidget {
 | |
|   const MineSetPage({super.key});
 | |
| 
 | |
|   @override
 | |
|   State<MineSetPage> createState() => _MineSetPageState();
 | |
| }
 | |
| 
 | |
| class _MineSetPageState extends State<MineSetPage> {
 | |
| 
 | |
|   /// 检查更新
 | |
|   Future<void> _checkUpdate() async {
 | |
|     LoadingDialogHelper.show();
 | |
|     final result = await AuthService.checkUpdate();
 | |
|     LoadingDialogHelper.hide();
 | |
|     if (FormUtils.hasValue(result, 'pd')) {
 | |
|       Map pd = result['pd'];
 | |
|       final versionInfo = await getAppVersion();
 | |
|       bool isWifi = true;
 | |
|       if (versionInfo.versionName != pd['VERSION']) {
 | |
|         //有更新 提示更新
 | |
|         final ok = await CustomAlertDialog.showConfirm(
 | |
|             context,
 | |
|             barrierDismissible:false,
 | |
|             title: '更新通知',
 | |
|             content: isWifi ? '发现新版本,是否更新?为了更好的体验,请更新到最新版本。' : '发现新版本,检查到您当前使用的是移动网络,是否更新?更新时请注意流量消耗。为了更好的体验,请更新到最新版本。',
 | |
|             cancelText: pd['ISUPDATE'] == '1' ? '' : '稍后更新',
 | |
|             confirmText: '立即更新'
 | |
|         );
 | |
|         if (ok) {
 | |
|           final apkUrl = pd['FILEURL'] ?? '';
 | |
|           await showUpdateConfirm(context, apkUrl: apkUrl);
 | |
|         }
 | |
|         return;
 | |
|       }
 | |
| 
 | |
|     }else{
 | |
|       _loadAppVersion();
 | |
| 
 | |
|     }
 | |
|   }
 | |
|   Future<void> _loadAppVersion() async {
 | |
|     final versionInfo = await getAppVersion();
 | |
|     ToastUtil.showNormal(context, '已经是最新版本!当前版本号:${versionInfo.fullVersion}');
 | |
| 
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Scaffold(
 | |
|       appBar: MyAppbar(title: "设置"),
 | |
|       backgroundColor: h_backGroundColor(),
 | |
|       body: Column(
 | |
|         children: [
 | |
|           GestureDetector(
 | |
|             child: _setItemWidget("修改密码"),
 | |
|             onTap: () {
 | |
|               pushPage(const MineSetPwdPage("0"), context);
 | |
|             },
 | |
|           ),
 | |
|           const Divider(height: 1, color: Colors.black12),
 | |
| 
 | |
|           GestureDetector(
 | |
|             child: _setItemWidget("更新人脸信息"),
 | |
|             onTap: () {
 | |
|               pushPage(
 | |
|                 const FaceRecognitionPage(studentId: '',data: {},
 | |
|                     mode: FaceMode.setUpdata),
 | |
|                 context,
 | |
|               );
 | |
|             },
 | |
|           ),
 | |
|           const Divider(height: 1, color: Colors.black12),
 | |
| 
 | |
|           GestureDetector(
 | |
|             child: _setItemWidget("更新签字信息"),
 | |
|             onTap: () {
 | |
|               pushPage(const FirstSignPage(), context);
 | |
|               // pushPage(MineSignPage(), context);
 | |
|             },
 | |
|           ),
 | |
|           const Divider(height: 1, color: Colors.black12),
 | |
| 
 | |
|           GestureDetector(
 | |
|             child: _setItemWidget("检查更新"),
 | |
|             onTap: () {
 | |
|               _checkUpdate();
 | |
|             },
 | |
|           ),
 | |
| 
 | |
|           const SizedBox(height: 15),
 | |
| 
 | |
|           GestureDetector(
 | |
|             child: Container(
 | |
|               padding: const EdgeInsets.symmetric(vertical: 15),
 | |
|               color: Colors.white,
 | |
|               child: const Center(
 | |
|                 child: Text("退出当前账户", style: TextStyle(fontSize: 14)),
 | |
|               ),
 | |
|             ),
 | |
|             onTap: () async {
 | |
|               CustomAlertDialog.showConfirm(
 | |
|                 context,
 | |
|                 title: '确认退出',
 | |
|                 content: '确定要退出当前账号吗',
 | |
|                 onConfirm: () async {
 | |
|                   await AuthService.logout(); // ✅ 等待登出完成
 | |
|                   if (!mounted) return;
 | |
|                   Navigator.pushAndRemoveUntil(
 | |
|                     context,
 | |
|                     MaterialPageRoute(builder: (context) => const LoginPage()),
 | |
|                         (Route<dynamic> route) => false,
 | |
|                   );
 | |
|                 },
 | |
|               );
 | |
|             },
 | |
|           ),
 | |
|         ],
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   Widget _setItemWidget(final String text) {
 | |
|     return Container(
 | |
|       height: 55,
 | |
|       color: Colors.white,
 | |
|       child: Padding(
 | |
|         padding: const EdgeInsets.all(15),
 | |
|         child: Row(
 | |
|           mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | |
|           children: [
 | |
|             Text(text, style: const TextStyle(fontSize: 14)),
 | |
|             const Icon(Icons.chevron_right),
 | |
|           ],
 | |
|         ),
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 |