WoofnWalk / lib / widgets / signUp_Login.dart
signUp_Login.dart
Raw
import 'package:email_validator/email_validator.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:woofnwalk/providers/accountAuth.dart';
import 'package:woofnwalk/screens/profile.dart';
import 'package:woofnwalk/screens/maps/walkers_list_screen.dart';

import '../providers/googleSignIn.dart';

class SignUp_LoginPage extends StatefulWidget {

  @override
  _SignUp_LoginPageState createState() => _SignUp_LoginPageState();
}

class _SignUp_LoginPageState extends State<SignUp_LoginPage> {
  final formKey = GlobalKey<FormState>();

  TextEditingController _emailController = new TextEditingController();
  TextEditingController _passwordController = new TextEditingController();

  @override
  void dispose(){
    _emailController.dispose();
    _passwordController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Center(
          child: Form(
            key: formKey,
            child: ListView(
                padding: const EdgeInsets.symmetric(horizontal: 24.0),
                children: [
                  const SizedBox(height: 60.0),
                  Column(
                    children: <Widget>[
                      Image.asset(
                        'images/loginpaw.png',
                        height: 120,
                        fit: BoxFit.fitHeight,
                      ),
                      const SizedBox(height: 30.0),
                      const Text(
                        'SIGN UP or LOGIN',
                        style: TextStyle(fontSize: 25),
                      ),
                    ],
                  ),

                  //inputs
                  const SizedBox(height: 60.0),
                  TextFormField(
                    controller: _emailController,
                    decoration: const InputDecoration(
                      filled: true,
                      labelText: 'Email',
                    ),
                    autovalidateMode: AutovalidateMode.onUserInteraction,
                      validator: (email) =>
                    email != null && !EmailValidator.validate(email)
                    ?'Enter a valid email'
                    : null,
                  ),

                  const SizedBox(height: 12.0),
                  TextFormField(
                    controller: _passwordController,
                    decoration: const InputDecoration(
                      filled: true,
                      labelText: 'Password',
                    ),
                    obscureText: true,
                    autovalidateMode: AutovalidateMode.onUserInteraction,
                    validator: (value) =>
                    value != null && value.length < 6
                        ?'Enter min. 6 characters'
                        : null,
                  ),

                  //google sign in
                  const SizedBox(height: 15.0),
                    ElevatedButton.icon(
                      icon: FaIcon(FontAwesomeIcons.google),
                      label: Text('Sign In with Google'),
                      onPressed: () async {
                        final provider = Provider.of<GoogleSignInProvider>(context, listen: false);
                        await provider.googleLogin();
                        Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=> WalkersList()));
                      },
                    ),

                  //buttons
                  ButtonBar(
                    children: <Widget>[
                      TextButton(
                        child: const Text('CANCEL'),
                        onPressed: () {
                          _emailController.clear();
                          _passwordController.clear();
                        },
                      ),
                      ElevatedButton(
                        child: const Text('SIGN UP'),
                        onPressed: () {
                          final String email = _emailController.text.trim();
                          final String password = _passwordController.text.trim();
                          final isValid = formKey.currentState!.validate();

                          if (!isValid) {
                            return;
                          } else {
                            context.read<AuthenticateService>().signUp(email, password);
                            //Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=> CreateProfile()));
                          }
                        },
                      ),
                      ElevatedButton(
                        child: const Text('LOGIN'),
                        onPressed: () {
                          final String email = _emailController.text.trim();
                          final String password = _passwordController.text.trim();
                          final isValid = formKey.currentState!.validate();

                          if (!isValid) {
                            return;
                          } else {
                            //context.read<AuthenticateService>().login(email, password);
                            Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=> WalkersList()));
                          }
                        }
                      ),
                    ],
                  ),
                ]
            )
          )
        )
    );
  }
}