From 79ea6f7b836ed1460913a73ac09960549c872404 Mon Sep 17 00:00:00 2001 From: llsajjad Date: Mon, 11 Aug 2025 13:30:53 +0330 Subject: [PATCH] fixed warnings --- lib/data/repositories/auth_repository.dart | 13 ++--- lib/data/services/tender_detail_service.dart | 35 ++++++------ lib/views/login/pages/login_desktop_page.dart | 56 ++++++++++++------- lib/views/login/pages/login_tablet_page.dart | 56 ++++++++++++------- lib/views/login/widgets/login_textfield.dart | 2 +- 5 files changed, 95 insertions(+), 67 deletions(-) diff --git a/lib/data/repositories/auth_repository.dart b/lib/data/repositories/auth_repository.dart index 7c669d8..3c6a722 100644 --- a/lib/data/repositories/auth_repository.dart +++ b/lib/data/repositories/auth_repository.dart @@ -13,12 +13,11 @@ class AuthRepository { try { final response = await _authService.login(email, password); final user = UserModel(token: response['token'], name: response['name']); - return Result.ok(user); // در حالت موفقیت، یک Ok برمی‌گرداند - } catch (e) { - // در حالت خطا، یک Error برمی‌گرداند - return Result.error( - AuthenticationException('Email or password is not correct.'), - ); - } + return Result.ok(user); + } on Exception { + return Result.error( + AuthenticationException('Email or password is not correct.'), + ); +} } } diff --git a/lib/data/services/tender_detail_service.dart b/lib/data/services/tender_detail_service.dart index fa5cc99..e6a2b7b 100644 --- a/lib/data/services/tender_detail_service.dart +++ b/lib/data/services/tender_detail_service.dart @@ -1,6 +1,5 @@ import 'dart:convert'; -import 'package:dio/dio.dart'; import 'package:tm_app/core/utils/logger.dart'; import 'package:tm_app/core/utils/result.dart'; import 'package:tm_app/data/services/mock_data/tender_detail_mock.dart'; @@ -10,27 +9,25 @@ import 'package:tm_app/data/services/network_manager.dart'; class TenderDetailService { TenderDetailService({required NetworkManager networkManager}) - : _networkManager = networkManager; + : _networkManager = networkManager; final NetworkManager _networkManager; -Future> getTenderDetail({ - required TenderDetailRequest request, -}) async { - try { - await Future.delayed(const Duration(seconds: 2)); - appLogger.info('get tender detail success'); + Future> getTenderDetail({ + required TenderDetailRequest request, + }) async { + try { + await Future.delayed(const Duration(seconds: 2)); + appLogger.info('get tender detail success'); - return Result.ok( - TenderDetailResponseModel.fromJson( - jsonDecode(tenderDetailMockData)['data'], - ), - ); - } catch (e, stackTrace) { - appLogger.error('get tender detail failed: $e', stackTrace: stackTrace); - return Result.error(Exception(e)); + return Result.ok( + TenderDetailResponseModel.fromJson( + jsonDecode(tenderDetailMockData)['data'], + ), + ); + } catch (e, stackTrace) { + appLogger.error('get tender detail failed: $e', stackTrace: stackTrace); + return Result.error(Exception(e)); + } } } - - -} diff --git a/lib/views/login/pages/login_desktop_page.dart b/lib/views/login/pages/login_desktop_page.dart index b04f176..3b48eb0 100644 --- a/lib/views/login/pages/login_desktop_page.dart +++ b/lib/views/login/pages/login_desktop_page.dart @@ -9,9 +9,38 @@ import '../../../core/utils/size_config.dart'; import '../../../view_models/auth_view_model.dart'; import '../widgets/widgets.dart'; -class LoginDesktopPage extends StatelessWidget { +class LoginDesktopPage extends StatefulWidget { const LoginDesktopPage({super.key}); + @override + State createState() => _LoginDesktopPageState(); +} + +class _LoginDesktopPageState extends State { + late final AuthViewModel viewModel; + + @override + void initState() { + super.initState(); + viewModel = context.read(); + viewModel.addListener(_viewModelListener); + } + + void _viewModelListener() { + if (viewModel.loggedInUser != null) { + HomeRouteData().go(context); + } else if (viewModel.errorMessage != null) { + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text(viewModel.errorMessage!))); + } + } + + @override + void dispose() { + viewModel.removeListener(_viewModelListener); + super.dispose(); + } + @override Widget build(BuildContext context) { SizeConfig.init(context); @@ -55,7 +84,6 @@ class LoginDesktopPage extends StatelessWidget { borderRedus: 12, ), SizedBox(height: 32.0.h()), - if (viewModel.isLoading) BaseButton( isEnabled: false, @@ -65,25 +93,11 @@ class LoginDesktopPage extends StatelessWidget { else BaseButton( isEnabled: viewModel.isLoginEnabled, - onPressed: - viewModel.isLoginEnabled - ? () async { - await viewModel.login(); - if (viewModel.loggedInUser != null) { - HomeRouteData().go(context); - } else if (viewModel.errorMessage != null) { - ScaffoldMessenger.of( - context, - ).showSnackBar( - SnackBar( - content: Text( - viewModel.errorMessage!, - ), - ), - ); - } - } - : null, + onPressed: () async { + if (viewModel.isLoginEnabled) { + await viewModel.login(); + } + }, ), ], ); diff --git a/lib/views/login/pages/login_tablet_page.dart b/lib/views/login/pages/login_tablet_page.dart index 19e9532..2c32465 100644 --- a/lib/views/login/pages/login_tablet_page.dart +++ b/lib/views/login/pages/login_tablet_page.dart @@ -9,9 +9,40 @@ import '../../../core/utils/size_config.dart'; import '../../../view_models/auth_view_model.dart'; import '../widgets/widgets.dart'; -class LoginTabletPage extends StatelessWidget { +class LoginTabletPage extends StatefulWidget { const LoginTabletPage({super.key}); + @override + State createState() => _LoginTabletPageState(); +} + +class _LoginTabletPageState extends State { + late final AuthViewModel viewModel; + + @override + void initState() { + super.initState(); + viewModel = context.read(); + viewModel.addListener(_viewModelListener); + } + + void _viewModelListener() { + if (viewModel.loggedInUser != null) { + HomeRouteData().go(context); + } + if (viewModel.errorMessage != null) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(viewModel.errorMessage!)), + ); + } + } + + @override + void dispose() { + viewModel.removeListener(_viewModelListener); + super.dispose(); + } + @override Widget build(BuildContext context) { SizeConfig.init(context); @@ -31,7 +62,6 @@ class LoginTabletPage extends StatelessWidget { SizedBox(height: 32.0.h()), const LoginTitle(), SizedBox(height: 32.0.h()), - LoginTextField( controller: viewModel.usernameController, focusNode: viewModel.usernameFocus, @@ -42,7 +72,6 @@ class LoginTabletPage extends StatelessWidget { prefixIconPadding: 4.0.w(), ), SizedBox(height: 16.0.h()), - LoginTextField( controller: viewModel.passwordController, focusNode: viewModel.passwordFocus, @@ -56,7 +85,6 @@ class LoginTabletPage extends StatelessWidget { borderRedus: 12, ), SizedBox(height: 32.0.h()), - if (viewModel.isLoading) BaseButton( isEnabled: false, @@ -66,21 +94,11 @@ class LoginTabletPage extends StatelessWidget { else BaseButton( isEnabled: viewModel.isLoginEnabled, - onPressed: - viewModel.isLoginEnabled - ? () async { - await viewModel.login(); - if (viewModel.loggedInUser != null) { - HomeRouteData().go(context); - } else if (viewModel.errorMessage != null) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(viewModel.errorMessage!), - ), - ); - } - } - : null, + onPressed: viewModel.isLoginEnabled + ? () async { + await viewModel.login(); + } + : null, ), ], ); diff --git a/lib/views/login/widgets/login_textfield.dart b/lib/views/login/widgets/login_textfield.dart index 159180e..d0dd050 100644 --- a/lib/views/login/widgets/login_textfield.dart +++ b/lib/views/login/widgets/login_textfield.dart @@ -38,7 +38,7 @@ class LoginTextField extends StatelessWidget { child: TextField( controller: controller, focusNode: focusNode, - obscureText: isPassword ? obscureText : false, + obscureText: isPassword && obscureText, decoration: InputDecoration( contentPadding: EdgeInsets.symmetric( vertical: (fieldHeight != null ? (fieldHeight! / 2.8) : 16.0).h(),