TF-2676 Add loading bar when load identities

This commit is contained in:
dab246
2024-04-12 15:21:40 +07:00
committed by Dat H. Pham
parent d651d33e46
commit 6c13e00935
3 changed files with 73 additions and 14 deletions
@@ -8,6 +8,7 @@ import 'package:get/get_state_manager/get_state_manager.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/transform_html_signature_state.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identities_controller.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/widgets/identity_list_tile_builder.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/widgets/identity_loading_widget.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/widgets/signature_builder.dart';
class IdentitiesRadioListBuilder extends StatelessWidget {
@@ -34,9 +35,22 @@ class IdentitiesRadioListBuilder extends StatelessWidget {
),
child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(16.0)),
child: responsiveUtils.isWebDesktop(context)
? _buildIdentityViewHorizontal(context)
: _buildIdentityViewVertical(context))
child: Stack(
children: [
if (responsiveUtils.isWebDesktop(context))
_buildIdentityViewHorizontal(context)
else
_buildIdentityViewVertical(context),
Obx(() => Align(
alignment: AlignmentDirectional.topCenter,
child: IdentityLoadingWidget(
identityViewState: controller.viewState.value,
settingViewState: controller.accountDashBoardController.viewState.value
)
))
],
)
)
);
}
@@ -0,0 +1,45 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/features/base/widget/circle_loading_widget.dart';
import 'package:tmail_ui_user/features/home/domain/state/get_session_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_identities_state.dart';
class IdentityLoadingWidget extends StatelessWidget {
final Either<Failure, Success> identityViewState;
final Either<Failure, Success> settingViewState;
const IdentityLoadingWidget({
super.key,
required this.identityViewState,
required this.settingViewState
});
@override
Widget build(BuildContext context) {
return settingViewState.fold(
(failure) => identityViewState.fold(
(failure) => const SizedBox.shrink(),
(success) {
if (success is GetAllIdentitiesLoading || success is GetSessionLoading) {
return const CircleLoadingWidget(padding: EdgeInsets.all(16.0));
} else {
return const SizedBox.shrink();
}
}
),
(success) => identityViewState.fold(
(failure) => const SizedBox.shrink(),
(success) {
if (success is GetAllIdentitiesLoading || success is GetSessionLoading) {
return const CircleLoadingWidget(padding: EdgeInsets.all(16.0));
} else {
return const SizedBox.shrink();
}
}
)
);
}
}