QueueClient/lib/login.dart
2023-08-21 08:24:10 +05:30

135 lines
4.8 KiB
Dart

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<LoginPage> createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
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("Enter your Phone Number"),
subtitle: TextField(controller: usernameController,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;
}
setState(() {
isLogging=true;
});
String results = await DataManager.instance().Login(usernameController.text, usernameController.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))
],
),
),
),
);
}
}