TF-624 Add loading widget when click single sign-on button

This commit is contained in:
dab246
2022-06-07 20:16:03 +07:00
committed by Dat H. Pham
parent 261b6a5870
commit dcaa340fa1
3 changed files with 23 additions and 14 deletions
@@ -129,4 +129,12 @@ abstract class BaseLoginView extends GetWidget<LoginController> {
..hintText(AppLocalizations.of(context).password)) ..hintText(AppLocalizations.of(context).password))
.build())); .build()));
} }
Widget buildLoadingCircularProgress() {
return const SizedBox(
key: Key('login_loading_icon'),
width: 40,
height: 40,
child: CircularProgressIndicator(color: AppColor.primaryColor));
}
} }
@@ -85,19 +85,19 @@ class LoginView extends BaseLoginView {
return Obx(() => loginController.loginState.value.viewState.fold( return Obx(() => loginController.loginState.value.viewState.fold(
(failure) => _buildNextButtonInContext(context), (failure) => _buildNextButtonInContext(context),
(success) => success is LoginLoadingAction (success) => success is LoginLoadingAction
? _buildLoadingCircularProgress() ? buildLoadingCircularProgress()
: _buildNextButtonInContext(context))); : _buildNextButtonInContext(context)));
case LoginFormType.credentialForm: case LoginFormType.credentialForm:
return Obx(() => loginController.loginState.value.viewState.fold( return Obx(() => loginController.loginState.value.viewState.fold(
(failure) => _buildLoginButtonInContext(context), (failure) => _buildLoginButtonInContext(context),
(success) => success is LoginLoadingAction (success) => success is LoginLoadingAction
? _buildLoadingCircularProgress() ? buildLoadingCircularProgress()
: _buildLoginButtonInContext(context))); : _buildLoginButtonInContext(context)));
case LoginFormType.ssoForm: case LoginFormType.ssoForm:
return Obx(() => loginController.loginState.value.viewState.fold( return Obx(() => loginController.loginState.value.viewState.fold(
(failure) => _buildLoginButtonInContext(context), (failure) => _buildLoginButtonInContext(context),
(success) => success is LoginLoadingAction (success) => success is LoginLoadingAction
? _buildLoadingCircularProgress() ? buildLoadingCircularProgress()
: _buildLoginButtonInContext(context))); : _buildLoginButtonInContext(context)));
default: default:
return const SizedBox.shrink(); return const SizedBox.shrink();
@@ -190,14 +190,6 @@ class LoginView extends BaseLoginView {
: _buildExpandedButton(context, buildLoginButton(context)); : _buildExpandedButton(context, buildLoginButton(context));
} }
Widget _buildLoadingCircularProgress() {
return const SizedBox(
key: Key('login_loading_icon'),
width: 40,
height: 40,
child: CircularProgressIndicator(color: AppColor.primaryColor));
}
bool _supportScrollForm(BuildContext context) { bool _supportScrollForm(BuildContext context) {
return !(responsiveUtils.isMobile(context) && responsiveUtils.isPortrait(context)); return !(responsiveUtils.isMobile(context) && responsiveUtils.isPortrait(context));
} }
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart'; import 'package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart';
import 'package:tmail_ui_user/features/login/presentation/base_login_view.dart'; import 'package:tmail_ui_user/features/login/presentation/base_login_view.dart';
import 'package:tmail_ui_user/features/login/presentation/state/login_state.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class LoginView extends BaseLoginView { class LoginView extends BaseLoginView {
@@ -47,7 +48,11 @@ class LoginView extends BaseLoginView {
Obx(() => buildLoginMessage(context, loginController.loginState.value)), Obx(() => buildLoginMessage(context, loginController.loginState.value)),
buildInputCredentialForm(context), buildInputCredentialForm(context),
buildLoginButton(context), buildLoginButton(context),
buildSSOButton(context), Obx(() => loginController.loginState.value.viewState.fold(
(failure) => _buildSSOButton(context),
(success) => success is LoginLoadingAction
? buildLoadingCircularProgress()
: _buildSSOButton(context))),
], ],
) )
), ),
@@ -163,7 +168,11 @@ class LoginView extends BaseLoginView {
Obx(() => buildLoginMessage(context, loginController.loginState.value)), Obx(() => buildLoginMessage(context, loginController.loginState.value)),
buildInputCredentialForm(context), buildInputCredentialForm(context),
buildLoginButton(context), buildLoginButton(context),
buildSSOButton(context), Obx(() => loginController.loginState.value.viewState.fold(
(failure) => _buildSSOButton(context),
(success) => success is LoginLoadingAction
? buildLoadingCircularProgress()
: _buildSSOButton(context))),
], ],
) )
) )
@@ -201,7 +210,7 @@ class LoginView extends BaseLoginView {
); );
} }
Widget buildSSOButton(BuildContext context) { Widget _buildSSOButton(BuildContext context) {
return Container( return Container(
margin: const EdgeInsets.only(bottom: 16, left: 24, right: 24), margin: const EdgeInsets.only(bottom: 16, left: 24, right: 24),
width: responsiveUtils.getDeviceWidth(context),height: 48, width: responsiveUtils.getDeviceWidth(context),height: 48,