diff --git a/lib/view_models/auth_view_model.dart b/lib/view_models/auth_view_model.dart index 7bc32ee..047e5a7 100644 --- a/lib/view_models/auth_view_model.dart +++ b/lib/view_models/auth_view_model.dart @@ -13,8 +13,8 @@ class AuthViewModel with ChangeNotifier { : _authRepository = authRepository { usernameController.addListener(_onTextChanged); passwordController.addListener(_onTextChanged); - usernameFocus.addListener(_onTextChanged); - passwordFocus.addListener(_onTextChanged); + // usernameFocus.addListener(_onTextChanged); + // passwordFocus.addListener(_onTextChanged); } final TextEditingController usernameController = TextEditingController(); @@ -58,6 +58,10 @@ class AuthViewModel with ChangeNotifier { switch (result) { case Ok(): _loggedInUser = result.value.data.customer; + usernameController.text.trim(); + passwordController.text.trim(); + usernameController.clear(); + passwordController.clear(); break; case Error(): _errorMessage = result.error.toString(); @@ -70,6 +74,13 @@ class AuthViewModel with ChangeNotifier { notifyListeners(); } + void forceLogout() { + _loggedInUser = null; + usernameController.clear(); + passwordController.clear(); + notifyListeners(); +} + Future logout() async { _errorMessage = null; notifyListeners(); diff --git a/lib/view_models/profile_view_model.dart b/lib/view_models/profile_view_model.dart index 17012ef..a434cdc 100644 --- a/lib/view_models/profile_view_model.dart +++ b/lib/view_models/profile_view_model.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:tm_app/data/repositories/auth_repository.dart'; import 'package:tm_app/data/services/model/profile_data/profile_data.dart'; +import 'package:tm_app/view_models/auth_view_model.dart'; import '../core/utils/result.dart'; import '../data/repositories/profile_repository.dart'; @@ -55,20 +57,28 @@ class ProfileViewModel with ChangeNotifier { _loggedOut = true; } - Future logout() async { - _errorMessage = null; - notifyListeners(); - final result = await _authRepository.logout(); - switch (result) { - case Ok(): - await localLogout(); - break; - case Error(): - _errorMessage = result.error.toString(); - break; - } +Future logout(BuildContext context) async { + _errorMessage = null; + notifyListeners(); - _errorMessage = null; - notifyListeners(); + final result = await _authRepository.logout(); + + switch (result) { + case Ok(): + await localLogout(); + // دسترسی به AuthViewModel و ریست یوزر + // چون با Provider کار می‌کنی: + final authViewModel = Provider.of(context, listen: false); + authViewModel.forceLogout(); + _loggedOut = true; + break; + case Error(): + _errorMessage = result.error.toString(); + break; } + + _errorMessage = null; + notifyListeners(); +} + } diff --git a/lib/views/profile/pages/m_profile_page.dart b/lib/views/profile/pages/m_profile_page.dart index 014a1c4..bc065ae 100644 --- a/lib/views/profile/pages/m_profile_page.dart +++ b/lib/views/profile/pages/m_profile_page.dart @@ -108,7 +108,7 @@ class _MobileProfilePageState extends State { // ), SizedBox(height: 24.0.h()), InkWell( - onTap: () => viewModel.logout(), + onTap: () => viewModel.logout(context), child: Container( width: double.infinity, height: 45.0.h(),