mhunt_launcher/lib/login.dart
2024-05-24 23:35:54 +05:30

122 lines
3.7 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:mhunt_launcher/Backend/Backend.dart';
import 'package:mhunt_launcher/Widgets/CustomWidgets.dart';
import 'package:mhunt_launcher/home.dart';
import 'package:shared_preferences/shared_preferences.dart';
class LoginPage extends StatefulWidget {
const LoginPage({super.key});
@override
State<LoginPage> createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
bool isReg = false;
@override
void initState() {
// TODO: implement initState
super.initState();
kickstartAnimations();
autoLogin();
}
void autoLogin()async{
SharedPreferences prefs = await SharedPreferences.getInstance();
if(prefs.containsKey("username") && prefs.containsKey("password")){
usernameController.text = prefs.getString("username")??'';
passwordController.text = prefs.getString("password")??'';
LoginOrReg();
}
}
void kickstartAnimations() async {
await Future.delayed(const Duration(milliseconds: 500));
setState(() {
op1 = 1;
op2 = 1;
op3 = 1;
});
}
TextEditingController usernameController = TextEditingController();
TextEditingController passwordController = TextEditingController();
@override
Widget build(BuildContext context) {
const Color backgroundColor = Color(0xFF111111);
const Color modalColor = Color(0xFFFFFFFF);
return Scaffold(
backgroundColor: Colors.transparent,
body: CustomBody(
context: context,
onAnimEnd: () {
// kickstartAnimations();
setState(() {});
},
child: Center(
child: GlassCard(child:
Container(
padding: EdgeInsets.all(25),
width: 600,
height: 400,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("Welcome to W3B Launcher", style: TextStyle(fontSize: 25,fontWeight: FontWeight.bold),),
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(children: [Text("Username "), SizedBox(width: 300,child: TextField(controller: usernameController,))], mainAxisAlignment: MainAxisAlignment.center,),
Row(children: [Text("Password "), SizedBox(width: 300,child: TextField(controller: passwordController,))], mainAxisAlignment: MainAxisAlignment.center),
SizedBox(height: 30,),
GlassButton(onTap: LoginOrReg, child: Text(isReg? "Register":"Login"),width: 150,height: 40),
],
),
Row(children: [Text(isReg? "Already have an Account? ":"Don't have an Account? "), InkWell(child: Text(isReg? "Login Here":"Register Here",style: TextStyle(color: Colors.blue),),onTap: (){setState(() {
isReg = !isReg;
});},)], mainAxisAlignment: MainAxisAlignment.center)
],
),
)),
)
),
);
}
void LoginOrReg() async{
// if(kDebugMode){
// Navigator.of(context).push(MaterialPageRoute(builder: (context)=>HomePage()));
// return;
// }
bool success = false;
if(isReg){
success = await Backend.Register(usernameController.text, passwordController.text);
}else{
success = await Backend.Login(usernameController.text, passwordController.text);
}
if(success){
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('username', usernameController.text);
prefs.setString('password', passwordController.text);
Navigator.of(context).push(MaterialPageRoute(builder: (context)=>HomePage()));
}
}
}