feat: global loading overlay

This commit is contained in:
efrilm
2025-08-16 19:47:40 +07:00
parent f138e1dcc9
commit 5387d7b7a6
5 changed files with 89 additions and 24 deletions
@@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:line_icons/line_icons.dart';
import 'package:loader_overlay/loader_overlay.dart';
import '../../../application/auth/logout_form/logout_form_bloc.dart';
import '../../../common/theme/theme.dart';
@@ -23,16 +24,31 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper {
@override
Widget build(BuildContext context) {
return BlocListener<LogoutFormBloc, LogoutFormState>(
listener: (context, state) {
state.failureOrAuthOption.fold(
() => null,
(either) => either.fold(
(f) => AppFlushbar.showAuthFailureToast(context, f),
(_) => context.router.replace(const LoginRoute()),
),
);
},
return MultiBlocListener(
listeners: [
BlocListener<LogoutFormBloc, LogoutFormState>(
listener: (context, state) {
state.failureOrAuthOption.fold(
() => null,
(either) => either.fold(
(f) => AppFlushbar.showAuthFailureToast(context, f),
(_) => context.router.replace(const LoginRoute()),
),
);
},
),
BlocListener<LogoutFormBloc, LogoutFormState>(
listenWhen: (previous, current) =>
previous.isSubmitting != current.isSubmitting,
listener: (context, state) {
if (state.isSubmitting) {
context.loaderOverlay.show();
} else {
context.loaderOverlay.hide();
}
},
),
],
child: Scaffold(
backgroundColor: AppColor.background,
body: CustomScrollView(