Advertisement
Guest User

login.dart

a guest
Oct 18th, 2019
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.41 KB | None | 0 0
  1. import 'dart:convert';
  2.  
  3. import 'package:day4_flutter2/page/page_home_berita.dart';
  4. import 'package:day4_flutter2/ui_view/page_home.dart';
  5. import 'package:day4_flutter2/ui_view/page_register.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:http/http.dart' as http;
  8. import 'package:shared_preferences/shared_preferences.dart';
  9.  
  10.  
  11. class PageLogin extends StatefulWidget {
  12. @override
  13. _PageLoginState createState() => _PageLoginState();
  14. }
  15.  
  16. enum LoginStatus {notSignIn, signIn}
  17.  
  18.  
  19.  
  20. class _PageLoginState extends State<PageLogin> {
  21.  
  22. LoginStatus _LoginStatus = LoginStatus.notSignIn;
  23. String email, password;
  24. final _key = new GlobalKey<FormState>();
  25.  
  26. bool _secureText = true;
  27.  
  28. showHide() {
  29. setState(() {
  30. _secureText = !_secureText;
  31. });
  32. }
  33.  
  34. check() {
  35. final form = _key.currentState;
  36. if (form.validate()) {
  37. form.save();
  38. login();
  39. }
  40. }
  41.  
  42. login() async {
  43. final response = await http.post(
  44. "http://192.168.10.232/server_berita/login.php",
  45. body: {"email": email, "password": password});
  46.  
  47. final data = jsonDecode(response.body);
  48. int value = data['value'];
  49. String pesan = data['message'];
  50. String emailAPI = data['email'];
  51. String namaAPI = data['username'];
  52. String id = data['id_user'];
  53.  
  54. if (value == 1) {
  55. setState(() {
  56. _LoginStatus = LoginStatus.signIn;
  57. savePref(value, emailAPI, namaAPI, id);
  58. });
  59. print(pesan);
  60. } else {
  61. print(pesan);
  62. }
  63. }
  64.  
  65. savePref(int value, String email, String nama, String id) async {
  66. SharedPreferences preferences = await SharedPreferences.getInstance();
  67. setState(() {
  68. preferences.setInt("value", value);
  69. preferences.setString("username", nama);
  70. preferences.setString("email", email);
  71. preferences.setString("id_user", id);
  72. preferences.commit();
  73. });
  74. }
  75.  
  76. var value;
  77.  
  78. getPref() async {
  79. SharedPreferences preferences = await SharedPreferences.getInstance();
  80. setState(() {
  81. value = preferences.getInt("value");
  82. _LoginStatus = value == 1 ? LoginStatus.signIn : LoginStatus.notSignIn;
  83. });
  84. }
  85.  
  86. signOut() async {
  87. SharedPreferences preferences = await SharedPreferences.getInstance();
  88. setState(() {
  89. preferences.setInt("value", null);
  90. preferences.commit();
  91. _LoginStatus = LoginStatus.notSignIn;
  92. });
  93. }
  94.  
  95. @override
  96. void initState() {
  97. // TODO: implement initState
  98. getPref();
  99. }
  100.  
  101. @override
  102. Widget build(BuildContext context) {
  103. switch (_LoginStatus) {
  104. case LoginStatus.notSignIn :
  105. return Scaffold(
  106. appBar: AppBar(
  107. title: Text('Login'),
  108. ),
  109.  
  110. body: Form(
  111. key: _key,
  112. child: ListView(
  113. padding: EdgeInsets.all(16),
  114. children: <Widget>[
  115. TextFormField(
  116. validator: (e) {
  117. if(e.isEmpty){
  118. return "Please inser Email";
  119. }
  120. },
  121. onSaved: (e) => email =e,
  122. decoration: InputDecoration(
  123. labelText: "email",
  124. ),
  125. ),
  126.  
  127. TextFormField(
  128. obscureText: _secureText,
  129. onSaved: (e) => password =e,
  130. decoration: InputDecoration(
  131. labelText: "Password",
  132. suffixIcon: IconButton(
  133. onPressed: showHide,
  134. icon: Icon(_secureText
  135. ? Icons.visibility
  136. : Icons.visibility_off),
  137. )
  138. ),
  139. ),
  140.  
  141. MaterialButton(
  142. onPressed: (){
  143. check();
  144. },
  145. child: Text("Login"),
  146. ),
  147. InkWell(
  148. onTap: (){
  149. Navigator.of(context).push(MaterialPageRoute(builder: (context) => RegisterPage()));
  150. },
  151. child: Text(
  152. "Create a new Accunt, in here",textAlign: TextAlign.center,
  153. ),
  154. )
  155. ],
  156. ),
  157. ),
  158. );
  159. break;
  160. case LoginStatus.signIn:
  161. return PageHomeBerita(signOut);
  162. break;
  163. }
  164. }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement