| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- 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<MinePage> createState() => _MinePageState();
- }
- class _MinePageState extends ConsumerState<MinePage>
- 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(),
- );
- }
- }
- }
|