import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/svg.dart'; import 'package:syncrow_web/utils/assets.dart'; import 'package:syncrow_web/pages/auth/bloc/login_bloc.dart'; import 'package:syncrow_web/pages/auth/bloc/login_event.dart'; import 'package:syncrow_web/pages/auth/bloc/login_state.dart'; import 'package:syncrow_web/pages/home/view/home_page.dart'; import 'package:syncrow_web/utils/style.dart'; class LoginWebPage extends StatelessWidget { const LoginWebPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: BlocProvider( create: (context) => LoginBloc(), child: BlocConsumer( listener: (context, state) { if (state is LoginSuccess) { // Navigate to home screen after successful login Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => const HomePage()), ); } else if (state is LoginFailure) { // Show error message ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(state.error), ), ); } }, builder: (context, state) { if (state is LoginLoading) { return const Center(child: CircularProgressIndicator()); } else { return _buildLoginForm(context); } }, ), ), ); } Widget _buildLoginForm(BuildContext context) { final loginBloc = BlocProvider.of(context); final TextEditingController _usernameController = TextEditingController(); final TextEditingController _passwordController = TextEditingController(); return Center( child: Stack( children: [ Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height, child: SvgPicture.asset( Assets.webBackground, fit: BoxFit.cover, ), ), Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height, decoration: const BoxDecoration( image: DecorationImage( image: AssetImage(Assets.vector), fit: BoxFit.cover, opacity: 0.9, ), ), ), Container( margin: const EdgeInsets.all(50), decoration: BoxDecoration( color: Colors.black.withOpacity(0.3), borderRadius: const BorderRadius.all(Radius.circular(20)), ), child:Center( child: ListView( shrinkWrap: true, children: [ Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ const Spacer(), Expanded( flex: 2, child: SvgPicture.asset( Assets.loginLogo, ), ), const Spacer(), Container( decoration: BoxDecoration( color: Colors.white.withOpacity(0.3), borderRadius: const BorderRadius.all(Radius.circular(30)), ), child: Padding( padding: const EdgeInsets.symmetric(horizontal: 50, vertical: 20), child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 15), const Text( 'Login', style: TextStyle( color: Colors.white, fontSize: 24, fontWeight: FontWeight.bold), ), const SizedBox(height: 30), Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ const Text( "Email", style: TextStyle( color: Colors.white, fontSize: 13, fontWeight: FontWeight.bold), ), SizedBox( width: MediaQuery.sizeOf(context).width * 0.2, child: TextFormField( controller: _usernameController, decoration: textBoxDecoration()!.copyWith(hintText: 'Email'), style: const TextStyle(color: Colors.black), ), ), ], ), const SizedBox(height: 20.0), Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ const Text( "Password", style: TextStyle( color: Colors.white, fontSize: 13, fontWeight: FontWeight.bold), ), SizedBox( width: MediaQuery.sizeOf(context).width * 0.2, child: TextFormField( controller: _passwordController, decoration: textBoxDecoration()!.copyWith(hintText: 'Password' ,), style: const TextStyle(color: Colors.black), ), ), const SizedBox(height: 20.0), const Text( "Forgot Password?", style: TextStyle( color: Colors.white, fontSize: 13, fontWeight: FontWeight.bold), ), ], ), const SizedBox(height: 20.0), ElevatedButton( onPressed: () async { // Trigger login event loginBloc.add( LoginButtonPressed( username: _usernameController.text, password: _passwordController.text, ), ); }, child: const Text('Login'), ), ], ), ), ), const Spacer(), ], ), ], )), ), ], ), ); } }