import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:queue_client/CustomWidgets.dart'; import 'package:queue_client/backend/DataManager.dart'; import 'package:queue_client/backend/Dialogs.dart'; import 'package:queue_client/home.dart'; import 'package:shared_preferences/shared_preferences.dart'; class LoginPage extends StatefulWidget { const LoginPage({Key? key}) : super(key: key); @override State createState() => _LoginPageState(); } class _LoginPageState extends State { TextEditingController usernameController = TextEditingController(); TextEditingController passwordController = TextEditingController(); @override void initState() { // TODO: implement initState super.initState(); Reset(); // AutoLogin(); } void Reset() async{ SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.clear(); isLogging =false; setState(() { }); } void AutoLogin()async{ String results = await DataManager.instance().AutoLogin(); isLogging = true; setState(() { }); if(results == "0"){ Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context)=>HomePage())); }else if(results == "-1"){ }else{ Dialogs.showAlertDialog(context, "Failed login", results); } isLogging=false; setState(() { }); } bool isLogging = true; @override Widget build(BuildContext context) { return Scaffold( body: SafeArea( child: Container( padding: EdgeInsets.all(20), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Column( children: [ SizedBox(height: 40,), // Text("Queue Helper",style:TextStyle(fontSize: 45)), GradientText(text: "Digital Queue", gradient: LinearGradient(colors: [Colors.white.withOpacity(0.5), Colors.white.withOpacity(0.3)]),style: TextStyle(fontSize: 45,fontWeight: FontWeight.bold),), Text("Stop waiting at queues!") ], ), (isLogging) ? Container() : Center( child: Card( child: Container( width: 350, padding: EdgeInsets.all(20), child: Column( mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ // Text("Login"), ListTile(title: Text("Phone Number"), subtitle: TextField(controller: usernameController,decoration: InputDecoration(hintText: "ex: 0701234567"),),), ListTile(title: Text("Pay Number"), subtitle: TextField(controller: passwordController,decoration: InputDecoration(hintText: "ex: 0701234567"),),), SizedBox(height: 30,), ElevatedButton(autofocus: true,onPressed: () async{ int isPhoneNumber = Helpers.isPhoneNumber(usernameController.text); if(isPhoneNumber==1){ Dialogs.showAlertDialog(context, "Invalid Number", "Phone number must be 10 digits"); return; } if(isPhoneNumber==2 || isPhoneNumber==4){ Dialogs.showAlertDialog(context, "Invalid Number", "Please enter a valid phone number"); return; } if(isPhoneNumber==3){ Dialogs.showAlertDialog(context, "Invalid Number", "Please Enter your Personal Phone number"); return; } if(passwordController.text.length < 6){ Dialogs.showAlertDialog(context, "Invalid Pay Number", "Pay Number length is invalid"); return; } setState(() { isLogging=true; }); String results = await DataManager.instance().Login(usernameController.text, passwordController.text); if(results == "0"){ Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context)=>HomePage())); }else{ Dialogs.showAlertDialog(context, "Failed login", results); } setState(() { isLogging=false; }); }, child: Padding( padding: const EdgeInsets.all(8.0), child: Text("Login"), )) ], ), ), ), ), Text("Developed by Xperience Technologies",style: TextStyle(fontSize: 12,color: Colors.grey)) ], ), ), ), ); } }