fixed warnings
This commit is contained in:
@@ -13,12 +13,11 @@ class AuthRepository {
|
|||||||
try {
|
try {
|
||||||
final response = await _authService.login(email, password);
|
final response = await _authService.login(email, password);
|
||||||
final user = UserModel(token: response['token'], name: response['name']);
|
final user = UserModel(token: response['token'], name: response['name']);
|
||||||
return Result.ok(user); // در حالت موفقیت، یک Ok برمیگرداند
|
return Result.ok(user);
|
||||||
} catch (e) {
|
} on Exception {
|
||||||
// در حالت خطا، یک Error برمیگرداند
|
return Result.error(
|
||||||
return Result.error(
|
AuthenticationException('Email or password is not correct.'),
|
||||||
AuthenticationException('Email or password is not correct.'),
|
);
|
||||||
);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:dio/dio.dart';
|
|
||||||
import 'package:tm_app/core/utils/logger.dart';
|
import 'package:tm_app/core/utils/logger.dart';
|
||||||
import 'package:tm_app/core/utils/result.dart';
|
import 'package:tm_app/core/utils/result.dart';
|
||||||
import 'package:tm_app/data/services/mock_data/tender_detail_mock.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 {
|
class TenderDetailService {
|
||||||
TenderDetailService({required NetworkManager networkManager})
|
TenderDetailService({required NetworkManager networkManager})
|
||||||
: _networkManager = networkManager;
|
: _networkManager = networkManager;
|
||||||
|
|
||||||
final NetworkManager _networkManager;
|
final NetworkManager _networkManager;
|
||||||
|
|
||||||
Future<Result<TenderDetailResponseModel>> getTenderDetail({
|
Future<Result<TenderDetailResponseModel>> getTenderDetail({
|
||||||
required TenderDetailRequest request,
|
required TenderDetailRequest request,
|
||||||
}) async {
|
}) async {
|
||||||
try {
|
try {
|
||||||
await Future.delayed(const Duration(seconds: 2));
|
await Future.delayed(const Duration(seconds: 2));
|
||||||
appLogger.info('get tender detail success');
|
appLogger.info('get tender detail success');
|
||||||
|
|
||||||
return Result.ok(
|
return Result.ok(
|
||||||
TenderDetailResponseModel.fromJson(
|
TenderDetailResponseModel.fromJson(
|
||||||
jsonDecode(tenderDetailMockData)['data'],
|
jsonDecode(tenderDetailMockData)['data'],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
} catch (e, stackTrace) {
|
} catch (e, stackTrace) {
|
||||||
appLogger.error('get tender detail failed: $e', stackTrace: stackTrace);
|
appLogger.error('get tender detail failed: $e', stackTrace: stackTrace);
|
||||||
return Result.error(Exception(e));
|
return Result.error(Exception(e));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -9,9 +9,38 @@ import '../../../core/utils/size_config.dart';
|
|||||||
import '../../../view_models/auth_view_model.dart';
|
import '../../../view_models/auth_view_model.dart';
|
||||||
import '../widgets/widgets.dart';
|
import '../widgets/widgets.dart';
|
||||||
|
|
||||||
class LoginDesktopPage extends StatelessWidget {
|
class LoginDesktopPage extends StatefulWidget {
|
||||||
const LoginDesktopPage({super.key});
|
const LoginDesktopPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<LoginDesktopPage> createState() => _LoginDesktopPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _LoginDesktopPageState extends State<LoginDesktopPage> {
|
||||||
|
late final AuthViewModel viewModel;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
viewModel = context.read<AuthViewModel>();
|
||||||
|
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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SizeConfig.init(context);
|
SizeConfig.init(context);
|
||||||
@@ -55,7 +84,6 @@ class LoginDesktopPage extends StatelessWidget {
|
|||||||
borderRedus: 12,
|
borderRedus: 12,
|
||||||
),
|
),
|
||||||
SizedBox(height: 32.0.h()),
|
SizedBox(height: 32.0.h()),
|
||||||
|
|
||||||
if (viewModel.isLoading)
|
if (viewModel.isLoading)
|
||||||
BaseButton(
|
BaseButton(
|
||||||
isEnabled: false,
|
isEnabled: false,
|
||||||
@@ -65,25 +93,11 @@ class LoginDesktopPage extends StatelessWidget {
|
|||||||
else
|
else
|
||||||
BaseButton(
|
BaseButton(
|
||||||
isEnabled: viewModel.isLoginEnabled,
|
isEnabled: viewModel.isLoginEnabled,
|
||||||
onPressed:
|
onPressed: () async {
|
||||||
viewModel.isLoginEnabled
|
if (viewModel.isLoginEnabled) {
|
||||||
? () async {
|
await viewModel.login();
|
||||||
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,
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -9,9 +9,40 @@ import '../../../core/utils/size_config.dart';
|
|||||||
import '../../../view_models/auth_view_model.dart';
|
import '../../../view_models/auth_view_model.dart';
|
||||||
import '../widgets/widgets.dart';
|
import '../widgets/widgets.dart';
|
||||||
|
|
||||||
class LoginTabletPage extends StatelessWidget {
|
class LoginTabletPage extends StatefulWidget {
|
||||||
const LoginTabletPage({super.key});
|
const LoginTabletPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<LoginTabletPage> createState() => _LoginTabletPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _LoginTabletPageState extends State<LoginTabletPage> {
|
||||||
|
late final AuthViewModel viewModel;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
viewModel = context.read<AuthViewModel>();
|
||||||
|
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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SizeConfig.init(context);
|
SizeConfig.init(context);
|
||||||
@@ -31,7 +62,6 @@ class LoginTabletPage extends StatelessWidget {
|
|||||||
SizedBox(height: 32.0.h()),
|
SizedBox(height: 32.0.h()),
|
||||||
const LoginTitle(),
|
const LoginTitle(),
|
||||||
SizedBox(height: 32.0.h()),
|
SizedBox(height: 32.0.h()),
|
||||||
|
|
||||||
LoginTextField(
|
LoginTextField(
|
||||||
controller: viewModel.usernameController,
|
controller: viewModel.usernameController,
|
||||||
focusNode: viewModel.usernameFocus,
|
focusNode: viewModel.usernameFocus,
|
||||||
@@ -42,7 +72,6 @@ class LoginTabletPage extends StatelessWidget {
|
|||||||
prefixIconPadding: 4.0.w(),
|
prefixIconPadding: 4.0.w(),
|
||||||
),
|
),
|
||||||
SizedBox(height: 16.0.h()),
|
SizedBox(height: 16.0.h()),
|
||||||
|
|
||||||
LoginTextField(
|
LoginTextField(
|
||||||
controller: viewModel.passwordController,
|
controller: viewModel.passwordController,
|
||||||
focusNode: viewModel.passwordFocus,
|
focusNode: viewModel.passwordFocus,
|
||||||
@@ -56,7 +85,6 @@ class LoginTabletPage extends StatelessWidget {
|
|||||||
borderRedus: 12,
|
borderRedus: 12,
|
||||||
),
|
),
|
||||||
SizedBox(height: 32.0.h()),
|
SizedBox(height: 32.0.h()),
|
||||||
|
|
||||||
if (viewModel.isLoading)
|
if (viewModel.isLoading)
|
||||||
BaseButton(
|
BaseButton(
|
||||||
isEnabled: false,
|
isEnabled: false,
|
||||||
@@ -66,21 +94,11 @@ class LoginTabletPage extends StatelessWidget {
|
|||||||
else
|
else
|
||||||
BaseButton(
|
BaseButton(
|
||||||
isEnabled: viewModel.isLoginEnabled,
|
isEnabled: viewModel.isLoginEnabled,
|
||||||
onPressed:
|
onPressed: viewModel.isLoginEnabled
|
||||||
viewModel.isLoginEnabled
|
? () async {
|
||||||
? () async {
|
await viewModel.login();
|
||||||
await viewModel.login();
|
}
|
||||||
if (viewModel.loggedInUser != null) {
|
: null,
|
||||||
HomeRouteData().go(context);
|
|
||||||
} else if (viewModel.errorMessage != null) {
|
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
|
||||||
SnackBar(
|
|
||||||
content: Text(viewModel.errorMessage!),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
: null,
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class LoginTextField extends StatelessWidget {
|
|||||||
child: TextField(
|
child: TextField(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
focusNode: focusNode,
|
focusNode: focusNode,
|
||||||
obscureText: isPassword ? obscureText : false,
|
obscureText: isPassword && obscureText,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
contentPadding: EdgeInsets.symmetric(
|
contentPadding: EdgeInsets.symmetric(
|
||||||
vertical: (fieldHeight != null ? (fieldHeight! / 2.8) : 16.0).h(),
|
vertical: (fieldHeight != null ? (fieldHeight! / 2.8) : 16.0).h(),
|
||||||
|
|||||||
Reference in New Issue
Block a user