Files
retail/lib/features/auth/presentation/widgets/auth_wrapper.dart
Phuoc Nguyen 30c245b401 fix
2025-10-21 16:45:52 +07:00

44 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../providers/auth_provider.dart';
import '../pages/login_page.dart';
import 'splash_screen.dart';
/// Wrapper widget that checks authentication status
/// Shows login page if not authenticated, otherwise shows child widget
class AuthWrapper extends ConsumerWidget {
const AuthWrapper({
super.key,
required this.child,
});
final Widget child;
@override
Widget build(BuildContext context, WidgetRef ref) {
final authState = ref.watch(authProvider);
print('AuthWrapper build: isAuthenticated=${authState.isAuthenticated}, isLoading=${authState.isLoading}');
// Show splash screen while checking auth status
if (authState.isLoading && authState.user == null) {
return const SplashScreen();
}
// Smooth fade transition between screens
return AnimatedSwitcher(
duration: const Duration(milliseconds: 400),
switchInCurve: Curves.easeInOut,
switchOutCurve: Curves.easeInOut,
child: authState.isAuthenticated
? KeyedSubtree(
key: const ValueKey('main_app'),
child: child,
)
: const KeyedSubtree(
key: ValueKey('login_page'),
child: LoginPage(),
),
);
}
}