import 'package:flutter/material.dart'; import 'package:pcastlivetv/routes.dart'; import 'package:pcastlivetv/services/snackbar_service.dart'; import 'package:pcastlivetv/stores/login_store.dart'; import 'package:validatorless/validatorless.dart'; import 'package:velocity_x/velocity_x.dart'; // import 'package:velocity_x/velocity_x.dart'; import '../components/nc_form_field.dart'; // import '../stores/login_store.dart'; class LoginPage extends StatefulWidget { const LoginPage({super.key}); @override State createState() => _LoginPageState(); } class _LoginPageState extends State { @override Widget build(BuildContext context) { LoginStore store = VxState.store as LoginStore; final formKey = GlobalKey(); String email = ''; String password = ''; return Container( color: const Color.fromRGBO(166, 0, 249, 1), child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Card( elevation: 20, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), side: const BorderSide( width: 1, color: Colors.black, ), ), child: Column( children: [ const SizedBox( height: 32.0, ), "Login".text.xl5.bold.make(), const SizedBox( height: 32.0, ), SizedBox( width: MediaQuery.of(context).size.width / 3, child: Form( key: formKey, child: Padding( padding: const EdgeInsets.only( left: 64.0, right: 64, bottom: 32, ), child: Column( children: [ NCFormField( label: 'Email', value: email, validator: Validatorless.multiple( [ Validatorless.email('Email inválido'), Validatorless.required('Email é obrigatório'), ], ), onChanged: (value) => email = value, ), const SizedBox( height: 16.0, ), NCFormField( label: 'Senha', value: password, obscureText: true, validator: Validatorless.required('Senha é obrigatória'), onChanged: (value) => password = value, ), const SizedBox( height: 32.0, ), ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: const Color.fromRGBO(166, 0, 249, 1), foregroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), onPressed: () async { await verifyLogin(formKey, store, email, password); }, child: const Padding( padding: EdgeInsets.all(8.0), child: Text('Entrar', style: TextStyle(fontSize: 24)), ), ), ], ), ), ), ), ], ), ), ], ), ), ); } Future verifyLogin(GlobalKey formKey, LoginStore store, String email, String password) async { processAuth(formKey, store, email, password); } Future processAuth(GlobalKey formKey, LoginStore store, String email, String password) async { Function? close; if (formKey.currentState!.validate()) { formKey.currentState!.save(); store.email = email; store.password = password; try { close = context.showLoading( msg: '', bgColor: Colors.transparent, textSize: 20, ); await store.login(); close(); if (store.isLogged) { SnackBarService.showSnackBar(content: "Login efetuado com sucesso!", error: false); router.go('/home'); return true; } if (store.message != "") { SnackBarService.showSnackBar(content: store.message!, error: true); return false; } } catch (e) { close!(); SnackBarService.showSnackBar(content: e.toString().replaceAll("Exception: ", ""), error: true); return false; } } return false; } }