135 lines
4.8 KiB
Dart
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))
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|