Commit f8dd0956 authored by valdi's avatar valdi

add login method

parent 32f9d879
// ignore_for_file: prefer_final_fields, unused_field, non_constant_identifier_names, prefer_const_constructors
import 'dart:convert';
// import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:http/http.dart' as http;
import 'package:manager_queue/helper/config.dart';
import 'package:manager_queue/helper/state.dart';
import 'package:manager_queue/main.dart';
import 'package:manager_queue/main_page.dart';
class LoginPage extends StatefulWidget {
const LoginPage({Key? key}) : super(key: key);
@override
State<LoginPage> createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
var _pinController = TextEditingController();
var _baseUrlController = TextEditingController();
bool _showPassword = false;
void _togglevisibility() {
setState(() {
_showPassword = !_showPassword;
});
}
// String baseUrl = prefs.getString('base_url') ?? "";
Future<List<String>> loginUser(BuildContext context) async {
String loginApi = baseUrlApi + apiUrlLogin;
var pinData = _pinController.text;
await prefs.setString('pin_user', pinData);
List<String> responseLogin = [];
if (_pinController.text.isNotEmpty) {
final String? session_keys = prefs.getString('session_key');
// print(session_keys);
Map data = {"session_key": session_keys, "method": "PIN", "key": pinData};
var dataEncode = jsonEncode(data);
var response = await http.post(Uri.parse(loginApi), body: dataEncode);
if (response.statusCode == 200) {
var status = jsonDecode(response.body)['status'];
var msg = jsonDecode(response.body)['msg'];
if (status == statusOk) {
// print("okeee");
var userId = jsonDecode(response.body)['data']['user']['id'];
await prefs.setString('user_id', userId);
// Navigator.of(context).pushReplacement(
// MaterialPageRoute(builder: (context) => KitchenDisplay()));
responseLogin.add(status);
responseLogin.add(msg);
return responseLogin;
} else {
// final snackBar = SnackBar(content: Text("password is not correct!"));
// Scaffold.of(context).showSnackBar(SnackBar(content: Text("asaaaaa")));
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
// print("pin salah");
responseLogin.add(status);
responseLogin.add(msg);
return responseLogin;
}
} else {
responseLogin.add("error");
responseLogin.add("Gagal terhubung ke server");
return responseLogin;
}
} else {
responseLogin.add("error");
responseLogin.add("Pin tidak boleh kosong");
return responseLogin;
}
}
@override
void initState() {
// getUserId().then((value) {
// print(value);
// if (value != '') {
// Navigator.pushNamed(context, '/login');
// }
// });
// print("login page");
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
padding: EdgeInsets.all(10),
color: Colors.indigo,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
"Welcome to Ravintola",
style: GoogleFonts.openSans(
color: Colors.white,
fontSize: MediaQuery.of(context).size.width * 0.04,
),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.04,
),
TextFormField(
controller: _pinController,
obscureText: !_showPassword,
keyboardType: TextInputType.number,
textInputAction: TextInputAction.go,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: "Masukkan PIN",
labelStyle: GoogleFonts.openSans(color: Colors.grey[600]),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.white),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
// color: Colors.black,
width: 2.0,
),
),
suffixIcon: GestureDetector(
onTap: () {
_togglevisibility();
},
child: Icon(
_showPassword ? Icons.visibility : Icons.visibility_off,
),
),
),
style: GoogleFonts.openSans(color: Colors.grey[300]),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.02,
),
ElevatedButton(
onPressed: () async {
// print("testt");
var toLogin = await loginUser(context);
if (toLogin[0] == statusOk) {
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (context) => MainPage()));
} else {
final snackBar = SnackBar(
content: Text(
toLogin[1],
style: GoogleFonts.openSans(),
),
action: SnackBarAction(
label: 'Close',
onPressed: () {
// Some code to undo the change.
},
),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
},
child: Text("Login"),
style: ElevatedButton.styleFrom(
primary: Colors.green,
),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.06,
),
// Container(
// child: Text(
// "Base url = " + baseUrl,
// style: GoogleFonts.openSans(color: Colors.grey[200]),
// ),
// ),
],
),
),
),
);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment