import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:healthcare_user/common/dashboard.dart'; import 'package:healthcare_user/common/settings.dart'; import 'package:healthcare_user/common/signup.dart'; import 'package:path/path.dart' as Path; class Login extends StatefulWidget { const Login({super.key}); @override State createState() => _LoginState(); } class _LoginState extends State { bool isObscureText=true; TextEditingController mobileNumberController = TextEditingController(); TextEditingController passwordController = TextEditingController(); @override void initState() { isObscureText=true; super.initState(); } Future onWillPop() async { final shouldPop = await showDialog(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( backgroundColor: primaryColor, body: Stack( children: [ /*Container( decoration: const BoxDecoration( image: DecorationImage(image: AssetImage("images/background.png"), fit: BoxFit.cover,), ), ),*/ GestureDetector( onTap: () { FocusManager.instance.primaryFocus?.unfocus(); }, child: SafeArea( child: SingleChildScrollView( child: Padding( padding: const EdgeInsets.all(10), child: Column( children: [ const SizedBox( height: 15, ), Container( //width: double.infinity, child: Image( image: const AssetImage('images/logo.png'), height: MediaQuery.of(context).size.height * .25, )), SizedBox( height:MediaQuery.of(context).size.height * .05, ), Container( child: TextFormField( cursorColor: greyColor, controller: mobileNumberController, keyboardType: TextInputType.number, decoration: textFormFieldDecoration(Icons.phone,'Enter MobileNumber'), ), ), SizedBox(height:MediaQuery.of(context).size.height * .02,), Container( child: TextFormField( cursorColor: greyColor, obscureText: isObscureText, controller: passwordController, decoration: InputDecoration( fillColor: Colors.white, filled: true, labelText: 'Password', prefixIcon: const Icon(Icons.password, color: greyColor,), labelStyle: const TextStyle( color: Colors.black, //<-- 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; }); }, ), ), ), ), SizedBox(height:MediaQuery.of(context).size.height * .02,), Align( alignment: Alignment.bottomRight, child: Padding(padding: const EdgeInsets.fromLTRB(0, 0, 0,0), child: TextButton( onPressed: () { /*Navigator.push( context, MaterialPageRoute(builder: (context) => OtpScreen()), );*/ }, child: const Text( 'Forgot Password?', style: TextStyle( color: Colors.white, decoration: TextDecoration.underline, ), ), ),), ), SizedBox(height:MediaQuery.of(context).size.height * .02,), Container( width:double.infinity, height: MediaQuery.of(context).size.height * .06, child: ElevatedButton( style: ElevatedButton.styleFrom( primary: buttonColors, // background onPrimary: Colors.black, // foreground ), onPressed: () async{ if (mobileNumberController.text != '' && passwordController.text != '') { AppSettings.preLoaderDialog(context); bool isOnline = await AppSettings.internetConnectivity(); if(isOnline){ var payload = new Map(); 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(10, 10,10,10), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const Text( 'Not a Member Yet?', style: TextStyle( color: Colors.white, ), ), TextButton( child: const Text( 'Sign Up', style: TextStyle(decoration: TextDecoration.underline,color: Colors.white), ), onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => const SignUp()), ); //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, )), ], ), ),*/ ), ); } }