Untitled

mail@pastecode.io avatarunknown
plain_text
19 days ago
2.3 kB
3
Indexable
Never
class _LoginPageState extends State<LoginPage> {
  late TextEditingController emailC;
  late TextEditingController passC;

  @override
  void initState() {
    super.initState();

    emailC = TextEditingController();
    passC = TextEditingController();
  }

  @override
  void dispose() {
    super.dispose();

    emailC.dispose();
    passC.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () => FocusScope.of(context).unfocus(),
      child: Scaffold(
        body: Center(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              TextField(
                controller: emailC,
                decoration: const InputDecoration(
                  labelText: 'Email',
                ),
              ),
              const SizedBox(
                height: 10,
              ),
              TextField(
                controller: passC,
                decoration: const InputDecoration(
                  labelText: 'Password',
                ),
              ),
              const SizedBox(
                height: 25,
              ),
              BlocListener<AuthBloc, AuthState>(
                listener: (context, state) {
                  if (state is LoginResult && state.isSuccess) {
                    Navigator.pushReplacementNamed(context, HomePage.route);
                  } else if (state is LoginResult && !state.isSuccess) {
                    context.showErrorSnackBar(message: state.message);
                  }
                },
                child: ElevatedButton(
                    onPressed: () {
                      _login();
                    },
                    child: const Text('Login')),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void _login() {
    final email = emailC.text.trim();
    final pass = passC.text.trim();
    if (email.isEmpty && pass.isEmpty || email.isEmpty || pass.isEmpty) {
      context.showErrorSnackBar(message: 'Email or password should be filled!');
      return;
    }
    context.read<AuthBloc>().add(LoginEvent(email: email, password: pass));
  }
}