import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:sino_med_cloud/l10n/app_localizations.dart'; import '../../main_tab_provider.dart'; import '../../auth/data/login_provider.dart'; import '../data/change_password_provider.dart'; import '../domain/mine_service.dart'; import 'change_password_page.dart'; class MinePage extends ConsumerStatefulWidget { const MinePage({super.key}); @override ConsumerState createState() => _MinePageState(); } class _MinePageState extends ConsumerState with SingleTickerProviderStateMixin { @override Widget build(BuildContext context) { final l10n = AppLocalizations.of(context)!; return Scaffold( appBar: AppBar( title: Text(l10n.mine), elevation: 0, ), body: ListView.builder( itemCount: 2, itemBuilder: (BuildContext context, int index) { if (index == 0) { return ListTile( leading: const Icon(Icons.lock_outline), title: Text(l10n.changePassword), trailing: const Icon(Icons.chevron_right), onTap: _handleChangePassword, ); } else if (index == 1) { return ListTile( leading: const Icon(Icons.logout, color: Colors.red), title: Text( l10n.logout, style: const TextStyle(color: Colors.red), ), trailing: const Icon(Icons.chevron_right), onTap: _handleLogout, ); } return const SizedBox.shrink(); }, ), ); } // 退出登录 void _handleLogout() async { await MineService.logout(loginSystem: "YUN_HIS_PC_WEB"); // 重置主页 Tab 索引 ref.read(currentTabIndexProvider.notifier).state = 0; // 重置登录页面状态 ref.read(loginTabIndexProvider.notifier).state = 0; ref.read(passwordObscureProvider.notifier).state = true; ref.read(smsCountdownProvider.notifier).state = 0; ref.read(smsHasReceivedProvider.notifier).state = false; ref.read(smsCodeFromServerProvider.notifier).state = ''; ref.read(passwordLoginPhoneProvider.notifier).state = ''; ref.read(passwordLoginPasswordProvider.notifier).state = ''; ref.read(smsLoginPhoneProvider.notifier).state = ''; ref.read(smsLoginCodeProvider.notifier).state = ''; Future.microtask(() { if (mounted) { context.replace('/'); } }); } void _handleChangePassword() { if (mounted) { // 打开对话框前重置所有状态,确保每次打开都是干净的 ref.read(changePwdPhoneProvider.notifier).state = ''; ref.read(changePwdServerSmsCodeProvider.notifier).state = ''; ref.read(changePwdPasswordProvider.notifier).state = ''; ref.read(changePwdPasswordVisibleProvider.notifier).state = false; ref.read(changePwdConfirmPasswordProvider.notifier).state = ''; ref.read(changePwdConfirmPasswordVisibleProvider.notifier).state = false; ref.read(changePwdSmsHasSentProvider.notifier).state = false; ref.read(changePwdSmsCountdownProvider.notifier).state = 0; ref.read(changePwdShowPasswordErrorProvider.notifier).state = false; showDialog( context: context, builder: (context) => const ChangePasswordPage(), ); } } }