
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:supplier_new/common/dashboard.dart';
import 'package:supplier_new/common/settings.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

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

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

class _LoginState extends State<Login> {

  final storage = FlutterSecureStorage(
    aOptions: AndroidOptions(
      resetOnError: true,
      encryptedSharedPreferences: true,
    ),
  );

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


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

  @override
  Widget build(BuildContext context) {

    return Scaffold(
        backgroundColor: Colors.white,
        body: Stack(
          children: <Widget>[
            /*Container(
                decoration:  const BoxDecoration(
                  image:  DecorationImage(image:  AssetImage("images/backgroundimage.png"), fit: BoxFit.cover,),
                ),
              ),*/
            GestureDetector(
              onTap: () {
                FocusManager.instance.primaryFocus?.unfocus();
              },
              child: SafeArea(
                  child: SingleChildScrollView(
                      child: Padding(
                        padding: const EdgeInsets.fromLTRB(24, 0, 24, 0),
                        child: Column(

                          children: <Widget>[
                            SizedBox(height: MediaQuery.of(context).size.height * .2),
                            CircleAvatar(radius: 80, backgroundColor: Color(0XFFF3F1FB)),
                            SizedBox(height: MediaQuery.of(context).size.height * .05),

                            SizedBox(height:MediaQuery.of(context).size.height * .024,),
                            Container(
                              child: TextFormField(
                                controller: mobileNumberController,
                                keyboardType: TextInputType.number,
                                textCapitalization: TextCapitalization.sentences,
                                maxLength: 10,
                                decoration: textFormFieldDecoration(Icons.phone,'Mobile Number'),
                                style:fontTextStyle(14,Color(0XFF2A2A2A),FontWeight.w400),
                                cursorColor: Color(0XFF8270DB),

                                //TextStyle(color: Colors.black,fontWeight: FontWeight.bold),
                              ),
                            ),
                            SizedBox(height:MediaQuery.of(context).size.height * .016,),

                            Container(
                              child: TextFormField(
                                cursorColor:Color(0XFF8270DB),
                                obscureText: isObscureText,
                                obscuringCharacter: '*',
                                controller: passwordController,
                                decoration: InputDecoration(
                                  filled: false,
                                  fillColor: Colors.white,
                                  labelText: 'Password',
                                  //prefixIcon: const Icon(Icons.lock, color: Colors.white,),
                                  labelStyle: fontTextStyle(14,Color(0XFF7E7F80),FontWeight.w400),
                                  border: OutlineInputBorder(
                                      borderRadius: BorderRadius.circular(4.0),
                                      borderSide: BorderSide(color: greyColor,
                                        width: 1,    )),
                                  focusedBorder: OutlineInputBorder(
                                    borderRadius: BorderRadius.circular(4.0),
                                    borderSide: BorderSide(color: Color(0XFF8270DB),width: 2,),
                                  ),
                                  enabledBorder: OutlineInputBorder(
                                    borderRadius: BorderRadius.circular(4.0),
                                    borderSide: BorderSide(color: greyColor),
                                  ),

                                  suffixIcon: IconButton(
                                    icon:  isObscureText==true?Image.asset('images/eye_icon.png',color: Color(0XFF7E7F80),width: 30,height: 30,):Image.asset('images/open_eye.png',color:Color(0XFF7E7F80),width: 30,height: 30,),
                                    /* Icon(
                                        icon:Image.asset('assets/your_image.png'),
                                        color: isObscureText==true?greyColor:primaryColor,
                                      ),*/
                                    onPressed: () {

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

                                ),
                                style:  fontTextStyle(14,Color(0XFF2A2A2A),FontWeight.w400),

                              ),
                            ),

                            SizedBox(height:MediaQuery.of(context).size.height * .016,),
                            Align(
                                alignment: Alignment.bottomLeft,
                                child:GestureDetector(
                                  onTap: (){
                                    /* Navigator.push(
                                        context,
                                        MaterialPageRoute(builder: (context) => ForgotpasswordNew()),
                                      );*/
                                  },
                                  child: Text(
                                    'Forgot Password?',
                                    style:  fontTextStyle(12,Color(0XFF1D7AFC),FontWeight.w600),

                                  ),
                                )
                            ),
                            SizedBox(height:MediaQuery.of(context).size.height * .024,),
                            Container(
                                width:double.infinity,
                                height: MediaQuery.of(context).size.height * .06,
                                child: ElevatedButton(
                                  style: ElevatedButton.styleFrom(
                                    foregroundColor: Colors.white,
                                    backgroundColor: primaryColor,
                                    shape: RoundedRectangleBorder(
                                      borderRadius: BorderRadius.circular(12.0), // Customize the radius
                                    ),
                                  ),
                                  onPressed: () async{

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

                                      bool isOnline = await AppSettings.internetConnectivity();

                                      if(isOnline){
                                        SharedPreferences prefs = await SharedPreferences.getInstance();
                                        String? fcmToken = prefs.getString('fcmToken');
                                        var payload = new Map<String, dynamic>();
                                        payload["phone"] = mobileNumberController.text.toString();
                                        payload["password"] = passwordController.text.toString();
                                        payload["fcmIds"] = [fcmToken];

                                        bool signinStatus = await AppSettings.login(payload);

                                        try{
                                          if (signinStatus) {
                                            Navigator.of(context,rootNavigator: true).pop();
                                            String token = AppSettings.accessToken;
                                            await storage.write(key: 'authToken', value: token);

                                            print('Token saved: $token');
                                            await Navigator.push(
                                              context,
                                              MaterialPageRoute(
                                                  builder: (context) => const DashboardScreen()),
                                            );
                                            AppSettings.longSuccessToast("Logged in Successfully");
                                            mobileNumberController.text='';
                                            passwordController.text='';

                                          } else {
                                            Navigator.of(context,rootNavigator: true).pop();
                                            AppSettings.longFailedToast("Invalid 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:  Text('Login',style: fontTextStyle(12,Colors.white,FontWeight.w600),),
                                )),
                          ],
                        ),
                      )
                  )),
            ),
          ],
        )
    );
  }
}
