import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../../app/router/route_names.dart'; import '../providers/auth_provider.dart'; class LoginScreen extends ConsumerWidget { const LoginScreen({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final authState = ref.watch(authProvider); ref.listen(authProvider, (_, next) { if (next is AuthAuthenticated) { context.go(RouteNames.home); } }); final isLoading = authState is AuthLoading; final errorMsg = authState is AuthError ? authState.message : null; return Scaffold( body: SafeArea( child: Center( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 32), child: Column( mainAxisSize: MainAxisSize.min, children: [ const Icon(Icons.menu_book_rounded, size: 64), const SizedBox(height: 20), Text('Reader App', style: Theme.of(context).textTheme.headlineMedium), const SizedBox(height: 8), Text( 'Đọc truyện mọi lúc, mọi nơi', style: Theme.of(context).textTheme.bodyLarge, ), const SizedBox(height: 48), if (errorMsg != null) ...[ Text(errorMsg, style: const TextStyle(color: Colors.red)), const SizedBox(height: 16), ], FilledButton.icon( onPressed: isLoading ? null : () => ref.read(authProvider.notifier).signInWithGoogle(), icon: isLoading ? const SizedBox( width: 18, height: 18, child: CircularProgressIndicator(strokeWidth: 2), ) : const Icon(Icons.login), label: const Text('Đăng nhập bằng Google'), style: FilledButton.styleFrom( minimumSize: const Size.fromHeight(52), ), ), ], ), ), ), ), ); } }