Add UserStateWrapper and ProfileImageService for user state management and profile image handling

This commit is contained in:
Van Leemput Dayron
2025-11-05 09:31:58 +01:00
parent 30dca05e15
commit 75c12e35a5
6 changed files with 275 additions and 131 deletions

View File

@@ -0,0 +1,42 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../blocs/user/user_bloc.dart';
import '../../blocs/user/user_state.dart' as user_state;
class UserStateWrapper extends StatelessWidget {
final Widget Function(BuildContext context, dynamic user) builder;
final Widget? loadingWidget;
final Widget? errorWidget;
final Widget? noUserWidget;
const UserStateWrapper({
super.key,
required this.builder,
this.loadingWidget,
this.errorWidget,
this.noUserWidget,
});
@override
Widget build(BuildContext context) {
return BlocBuilder<UserBloc, user_state.UserState>(
builder: (context, state) {
if (state is user_state.UserLoading) {
return loadingWidget ??
const Center(child: CircularProgressIndicator());
}
if (state is user_state.UserError) {
return errorWidget ?? Center(child: Text('Erreur: ${state.message}'));
}
if (state is! user_state.UserLoaded) {
return noUserWidget ??
const Center(child: Text('Aucun utilisateur connecté.'));
}
return builder(context, state.user);
},
);
}
}