feat: global loading overlay
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user