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 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( body: Stack( children: [ 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: [ 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(); 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: [ 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, )), ], ), ),*/ ), ); } }