import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:path/path.dart' as Path; import 'package:watermanagement/otpscreen.dart'; import 'package:watermanagement/settings.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/backgroundimage.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, )), const SizedBox( height: 15, ), Container( padding: const EdgeInsets.all(10), child: TextFormField( cursorColor: greyColor, controller: mobileNumberController, keyboardType: TextInputType.number, decoration: const InputDecoration( prefixIcon: Icon( Icons.phone, color: greyColor, ), border: OutlineInputBorder( borderSide: BorderSide(color: greyColor)), focusedBorder: OutlineInputBorder( borderSide: BorderSide(color:greyColor), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: greyColor), ), labelText: 'Enter MobileNumber', labelStyle: TextStyle( color: greyColor, //<-- SEE HERE ), ), ), ), const SizedBox( height: 15, ), 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 != '') { AppSettings.preLoaderDialog(context); bool isOnline = await AppSettings.internetConnectivity(); if(isOnline){ var payload = new Map(); payload["mobileNumbers"] = mobileNumberController.text.toString(); bool signinStatus = await AppSettings.loginOtp(payload); try{ if (signinStatus) { Navigator.of(context,rootNavigator: true).pop(); await Navigator.push( context, MaterialPageRoute( builder: (context) => OtpScreen(phoneNumber:mobileNumberController.text)), ); AppSettings.longSuccessToast("OTP sent Successfully"); mobileNumberController.text=''; passwordController.text=''; } else { Navigator.of(context,rootNavigator: true).pop(); AppSettings.longFailedToast("Please enter valid phone number"); } } 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'), )), ], ), ) )), ), ], ) ), ); } }