TF-2676 Add loading bar when load identities
This commit is contained in:
+17
-3
@@ -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
|
||||
)
|
||||
))
|
||||
],
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+45
@@ -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();
|
||||
}
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user