import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import 'package:path/path.dart' as Path;
import 'package:watermanagement/dashboard.dart';
import 'package:watermanagement/settings.dart';
import 'package:watermanagement/signup.dart';


class Login extends StatefulWidget {
  const Login({super.key});

  @override
  State<Login> createState() => _LoginState();
}

class _LoginState extends State<Login> {

  bool isObscureText=true;
  TextEditingController mobileNumberController = TextEditingController();
  TextEditingController passwordController = TextEditingController();


  @override
  void initState() {
    isObscureText=true;
    super.initState();
  }

  Future<bool> onWillPop() async {
    final shouldPop = await showDialog<bool>(context: context, builder: (context) {
      return AlertDialog(
        title: const Text('Do you want to exit app?',
            style: TextStyle(
              color: primaryColor,
              fontSize: 20,
            )),
        actionsAlignment: MainAxisAlignment.spaceBetween,
        actions: [
          TextButton(
            onPressed: () {
              SystemNavigator.pop();
            },
            child: const Text('Yes',
                style: TextStyle(
                  color: primaryColor,
                  fontSize: 20,
                )),
          ),
          TextButton(
            onPressed: () {
              Navigator.of(context).pop(false);
            },
            child: const Text('No',
                style: TextStyle(
                  color: primaryColor,
                  fontSize: 20,
                )),
          ),
        ],
      );
    },
    );
    return shouldPop!;
  }

  @override
  Widget build(BuildContext context) {
    String lastInputValue="";

    return WillPopScope(
      onWillPop: () async => onWillPop(),
      child: Scaffold(

          body: Stack(
            children: <Widget>[
              Container(
                decoration:  const BoxDecoration(
                  image:  DecorationImage(image:AssetImage("images/bggimgg.png"), fit: BoxFit.cover,),
                ),
              ),
              GestureDetector(
                onTap: () {
                  FocusManager.instance.primaryFocus?.unfocus();
                },
                child: SafeArea(
                    child: SingleChildScrollView(
                        child: Padding(
                          padding: const EdgeInsets.all(10),
                          child: Column(
                            children: <Widget>[
                              const SizedBox(
                                height: 15,
                              ),
                              Container(
                                //width: double.infinity,
                                  child: Image(
                                    image: const AssetImage('images/logo.png'),
                                    height: MediaQuery.of(context).size.height * .18,
                                  )),
                              const SizedBox(
                                height: 15,
                              ),
                              Container(
                                padding: const EdgeInsets.all(10),
                                child: TextFormField(
                                  cursorColor: Colors.white,
                                  controller: mobileNumberController,
                                  keyboardType: TextInputType.number,
                                  decoration: textFormFieldDecoration(Icons.phone,'Enter MobileNumber'),

                                ),
                              ),
                              const SizedBox(
                                height: 15,
                              ),

                               Container(
                                padding: const EdgeInsets.fromLTRB(10, 10, 10, 0),
                                child: TextFormField(
                                  cursorColor: greyColor,
                                  obscureText: isObscureText,
                                  controller: passwordController,
                                  decoration: InputDecoration(
                                    filled: true,
                                    fillColor: Colors.white,
                                    labelText: 'Password',
                                    prefixIcon: const Icon(Icons.password, color: greyColor,),
                                    labelStyle: const TextStyle(
                                        color: primaryColor, fontWeight: FontWeight.bold//<-- SEE HERE
                                    ),
                                    border: const OutlineInputBorder(
                                        borderSide: BorderSide(color: primaryColor)),
                                    focusedBorder: const OutlineInputBorder(
                                      borderSide: BorderSide(color: primaryColor),
                                    ),
                                    enabledBorder: const OutlineInputBorder(
                                      borderSide: BorderSide(color: primaryColor),
                                    ),
                                    suffixIcon: IconButton(
                                      icon:  Icon(
                                        Icons.visibility_off_outlined,
                                        color: isObscureText==true?greyColor:primaryColor,
                                      ),
                                      onPressed: () {

                                        print("show password");
                                        setState(() {
                                          isObscureText = !isObscureText;
                                        });
                                      },
                                    ),

                                  ),

                                ),
                              ),
                              Padding(padding: const EdgeInsets.fromLTRB(220, 10, 0,10),
                                child: TextButton(
                                  onPressed: () {
                                  /*  Navigator.push(
                                      context,
                                      MaterialPageRoute(builder: (context) => Forgotpassword()),
                                    );*/
                                  },
                                  child: const Text(
                                    'Forgot Password?',
                                    style: TextStyle(
                                      color: Colors.white,
                                      fontSize: 15,
                                      decoration: TextDecoration.underline,

                                    ),
                                  ),
                                ),),
                              Container(
                                  width: 400,
                                  height: 50,
                                  padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
                                  child: ElevatedButton(
                                    style: ElevatedButton.styleFrom(
                                      primary: primaryColor, // background
                                      onPrimary: Colors.white, // foreground
                                    ),
                                    onPressed: ()  async{

                                      if (mobileNumberController.text != '' ||
                                          passwordController.text != '') {
                                        AppSettings.preLoaderDialog(context);

                                        bool isOnline = await AppSettings.internetConnectivity();

                                        if(isOnline){
                                          var payload = new Map<String, dynamic>();
                                          payload["phone"] = mobileNumberController.text.toString();
                                          payload["password"] = passwordController.text.toString();

                                          bool signinStatus = await AppSettings.login(payload);

                                          try{
                                            if (signinStatus) {
                                              Navigator.of(context,rootNavigator: true).pop();

                                              await Navigator.push(
                                                context,
                                                MaterialPageRoute(
                                                    builder: (context) => const Dashboard()),
                                              );
                                              AppSettings.longSuccessToast("Logged in Successfully");
                                              mobileNumberController.text='';
                                              passwordController.text='';

                                            } else {
                                              Navigator.of(context,rootNavigator: true).pop();
                                              AppSettings.longFailedToast("Please enter valid details");
                                            }
                                          }
                                          catch(exception){
                                            Navigator.of(context,rootNavigator: true).pop();
                                            print(exception);
                                          }
                                        }
                                        else{
                                          Navigator.of(context,rootNavigator: true).pop();
                                          AppSettings.longFailedToast("Please Check internet");
                                        }


                                      }
                                      else{

                                        AppSettings.longFailedToast("Please enter valid details");
                                      }

                                    },
                                    child: const Text('Login'),
                                  )),
                              Padding(padding: const EdgeInsets.fromLTRB(150, 10,0,10),
                                child: Row(
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: <Widget>[
                                    const Text(
                                      'Not a Member Yet?',
                                      style: TextStyle(
                                        color: Colors.white,
                                      ),
                                    ),
                                    TextButton(
                                      child: const Text(
                                        'Sign Up',
                                        style: TextStyle(fontSize: 15,
                                            decoration: TextDecoration.underline,color: Colors.white),
                                      ),
                                      onPressed: () {
                                        Navigator.push(
                                          context,
                                          MaterialPageRoute(
                                              builder: (context) => const SignIn()),
                                        );
                                        //signup screen
                                      },
                                    )
                                  ],
                                ),)
                            ],
                          ),
                        )
                    )),
              ),
            ],
          )
        /*bottomNavigationBar: Container(
    padding: EdgeInsets.only(bottom: 13),
    height: 38,
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      crossAxisAlignment: CrossAxisAlignment.center,
      children: [
        Container(
            child: Image(
              image: AssetImage('images/logo_btm.png'),
              width: 90,
            )),
      ],
    ),
  ),*/
      ),
    );
  }
}
