Advertisement
Guest User

Untitled

a guest
Mar 11th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.06 KB | None | 0 0
  1. import 'dart:convert';
  2.  
  3. import 'package:http/http.dart' as http;
  4. import 'package:liracare_flutter/modules/home/home.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:liracare_flutter/settings/env.dart';
  7. import 'package:progress_hud/progress_hud.dart';
  8. import 'package:fluttertoast/fluttertoast.dart';
  9. import 'package:shared_preferences/shared_preferences.dart';
  10. import 'package:firebase_messaging/firebase_messaging.dart';
  11.  
  12. class Login extends StatefulWidget {
  13. bool logedin = false;
  14. @override
  15. _LoginState createState() => _LoginState();
  16. }
  17.  
  18. class _LoginData {
  19. String username = '';
  20. String password = '';
  21. }
  22.  
  23. class _LoginState extends State<Login> {
  24. String _token = '';
  25. FirebaseMessaging firebaseMessaging = new FirebaseMessaging();
  26. final GlobalKey<FormState> _formKey = new GlobalKey<FormState>();
  27. void ceklogin() async {
  28. var prefs = await SharedPreferences.getInstance();
  29. var login = prefs.getBool("login");
  30. if (login) {
  31. setState(() {
  32. widget.logedin = true;
  33. });
  34. }
  35. // return false;
  36. }
  37.  
  38. ProgressHUD _progressHUD;
  39. bool _loading = false;
  40. @override
  41. void initState() {
  42. // print(ceklogin());
  43. if (widget.logedin == true) {
  44. Navigator.pushReplacement(context,
  45. MaterialPageRoute(builder: (BuildContext context) => Home()));
  46. }
  47. super.initState();
  48. _progressHUD = new ProgressHUD(
  49. backgroundColor: Colors.black12,
  50. color: Colors.white,
  51. containerColor: Colors.teal,
  52. borderRadius: 5.0,
  53. text: 'Loading...',
  54. );
  55.  
  56. firebaseMessaging.configure(
  57. onLaunch: (Map<String, dynamic> mag){
  58. print("onlaunch called");
  59. },
  60. onResume: (Map<String, dynamic> mag){
  61. print("on resume called");
  62. },
  63. onMessage: (Map<String, dynamic> mag){
  64. print("called");
  65. }
  66. );
  67. firebaseMessaging.requestNotificationPermissions(
  68. const IosNotificationSettings(
  69. sound: true,
  70. alert: true,
  71. badge: true
  72. )
  73. );
  74. firebaseMessaging.onIosSettingsRegistered.listen((IosNotificationSettings setting){
  75. print('IOS setting registered');
  76. });
  77.  
  78. firebaseMessaging.getToken().then((token){
  79. update(token);
  80. });
  81. }
  82.  
  83. _LoginData _data = new _LoginData();
  84.  
  85. String _validateUsername(String value) {
  86. if (value.length == 0) {
  87. return 'Username tidak boleh kosong';
  88. }
  89. return null;
  90. }
  91.  
  92. String _validatePassword(String value) {
  93. if (value.length < 5) {
  94. return 'password harus lebih dari 5 karakter';
  95. }
  96. return null;
  97. }
  98.  
  99. void submit() async {
  100.  
  101. if (this._formKey.currentState.validate()) {
  102. _formKey.currentState.save();
  103. setState(() {
  104. _loading = true;
  105. });
  106. try {
  107. Map data = {'username': _data.username, 'password': _data.password};
  108.  
  109. var url = Env.ENDPOINT + "login";
  110. var login = await http.post(url, body: data);
  111. var jsonData = json.decode(login.body);
  112. var kodedokter= jsonData["userlog"]["kodedokter"];
  113. var uslognm = jsonData["userlog"]["uslognm"];
  114. var password = jsonData["userlog"]["uspass"];
  115.  
  116. if (jsonData["process"] == true) {
  117. setState(() {
  118. _loading = false;
  119. });
  120.  
  121. // if (jsonData.contains("userlog")) //["userlog"]["kodedokter"] != null) {
  122. // kodedokter = jsonData["userlog"]["kodedokter"];
  123. // }
  124.  
  125. SharedPreferences prefs = await SharedPreferences.getInstance();
  126. // LoginResponse loginResponse = new LoginResponse.fromJson(jsonData);
  127.  
  128. prefs.setBool("login", true);
  129. prefs.setString("userid", uslognm);
  130. prefs.setString("password", password);
  131.  
  132. prefs.setString("kodedokter", kodedokter);
  133. prefs.setString("modul", kodedokter);
  134.  
  135. // print("token:"+_token);
  136. // print(_token+"\n Ini data kiriman: ");
  137. Map dataToken = {'username': _data.username, 'token': _token};
  138. print(dataToken);
  139. var url = Env.ENDPOINT + "saveTokenUser";
  140. var logintoken = await http.post(url, body: dataToken);
  141. var jsonDataToken = json.decode(logintoken.body);
  142.  
  143. if(jsonDataToken['process'] == true){
  144. Fluttertoast.showToast(
  145. msg: "save token failed",
  146. toastLength: Toast.LENGTH_SHORT,
  147. gravity: ToastGravity.BOTTOM,
  148. timeInSecForIos: 1,
  149. backgroundColor: Colors.grey,
  150. textColor: Colors.white,
  151. fontSize: 12.0);
  152. }else{
  153. Fluttertoast.showToast(
  154. msg: "token saved",
  155. toastLength: Toast.LENGTH_SHORT,
  156. gravity: ToastGravity.BOTTOM,
  157. timeInSecForIos: 1,
  158. backgroundColor: Colors.grey,
  159. textColor: Colors.white,
  160. fontSize: 12.0);
  161. }
  162.  
  163. Navigator.pushReplacement(context,
  164. MaterialPageRoute(builder: (BuildContext context) => Home()));
  165. Fluttertoast.showToast(
  166. msg: "Login Success",
  167. toastLength: Toast.LENGTH_SHORT,
  168. gravity: ToastGravity.BOTTOM,
  169. timeInSecForIos: 1,
  170. backgroundColor: Colors.grey,
  171. textColor: Colors.white,
  172. fontSize: 12.0);
  173. } else {
  174. setState(() {
  175. _loading = false;
  176. });
  177.  
  178. Fluttertoast.showToast(
  179. msg: jsonData["message"] + " " + jsonData["detail"],
  180. toastLength: Toast.LENGTH_SHORT,
  181. gravity: ToastGravity.BOTTOM,
  182. timeInSecForIos: 1,
  183. backgroundColor: Colors.grey,
  184. textColor: Colors.white,
  185. fontSize: 12.0);
  186. }
  187. } catch (e) {
  188. setState(() {
  189. _loading = false;
  190. });
  191. print(e);
  192. print("gagal login");
  193. Fluttertoast.showToast(
  194. msg: "Tejadi kesalahan sistem, tidak bisak koneksi dengan server",
  195. toastLength: Toast.LENGTH_SHORT,
  196. gravity: ToastGravity.BOTTOM,
  197. timeInSecForIos: 1,
  198. backgroundColor: Colors.grey,
  199. textColor: Colors.white,
  200. fontSize: 12.0);
  201. }
  202. }
  203. }
  204.  
  205. update(String stoken){
  206. print("ini token: "+stoken);
  207. _token = stoken;
  208. setState(() {
  209.  
  210. });
  211. }
  212.  
  213. @override
  214. Widget build(BuildContext context) {
  215. return new Stack(
  216. children: <Widget>[
  217. // The containers in the background
  218. new Column(
  219. children: <Widget>[
  220. new Container(
  221. child: Center(
  222. child: CircleAvatar(
  223. radius: 40.0,
  224. backgroundColor: Colors.white,
  225. child: Image.asset(
  226. 'assets/images/logo_lira.png',
  227. height: 60.0,
  228. )),
  229. ),
  230. height: MediaQuery.of(context).size.height * .50,
  231. color: Colors.teal,
  232. ),
  233. new Container(
  234. height: MediaQuery.of(context).size.height * .50,
  235. color: Colors.white,
  236. )
  237. ],
  238. ),
  239. new Container(
  240. alignment: Alignment.topCenter,
  241. padding: new EdgeInsets.only(
  242. top: MediaQuery.of(context).size.height * .40,
  243. right: 30.0,
  244. left: 30.0),
  245. child: new Container(
  246. height: 350.0,
  247. width: MediaQuery.of(context).size.width,
  248. child: new Card(
  249. shape: RoundedRectangleBorder(
  250. borderRadius: BorderRadius.circular(10.0)),
  251. child: Padding(
  252. padding: EdgeInsets.all(20.0),
  253. child: ListView(
  254. children: <Widget>[
  255. Form(
  256. key: this._formKey,
  257. child: Column(
  258. children: <Widget>[
  259. TextFormField(
  260. decoration: InputDecoration(labelText: "Username"),
  261. validator: this._validateUsername,
  262. onSaved: (String value) {
  263. this._data.username = value;
  264. },
  265. ),
  266. TextFormField(
  267. obscureText: true,
  268. decoration: InputDecoration(labelText: "Password"),
  269. validator: this._validatePassword,
  270. onSaved: (String value) {
  271. this._data.password = value;
  272. },
  273. ),
  274. ],
  275. ),
  276. ),
  277. SizedBox(
  278. height: 50.0,
  279. ),
  280. RaisedButton(
  281. shape: new RoundedRectangleBorder(
  282. borderRadius: new BorderRadius.circular(30.0)),
  283. color: Colors.teal[300],
  284. onPressed: () {
  285. this.submit();
  286. },
  287. child: SizedBox(
  288. width: double.infinity,
  289. height: 50.0,
  290. child: Center(
  291. child: Text("Login",
  292. style: TextStyle(
  293. color: Colors.white,
  294. fontWeight: FontWeight.bold,
  295. fontSize: 15.0)))),
  296. ),
  297. Center(
  298. child: Text("or"),
  299. ),
  300. ],
  301. ),
  302. ),
  303. color: Colors.white,
  304. elevation: 4.0,
  305. ),
  306. ),
  307. ),
  308. (_loading == true) ? _progressHUD : Text(""),
  309. ],
  310. );
  311. }
  312. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement