Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:convert';
- import 'package:http/http.dart' as http;
- import 'package:liracare_flutter/modules/home/home.dart';
- import 'package:flutter/material.dart';
- import 'package:liracare_flutter/settings/env.dart';
- import 'package:progress_hud/progress_hud.dart';
- import 'package:fluttertoast/fluttertoast.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- import 'package:firebase_messaging/firebase_messaging.dart';
- class Login extends StatefulWidget {
- bool logedin = false;
- @override
- _LoginState createState() => _LoginState();
- }
- class _LoginData {
- String username = '';
- String password = '';
- }
- class _LoginState extends State<Login> {
- String _token = '';
- FirebaseMessaging firebaseMessaging = new FirebaseMessaging();
- final GlobalKey<FormState> _formKey = new GlobalKey<FormState>();
- void ceklogin() async {
- var prefs = await SharedPreferences.getInstance();
- var login = prefs.getBool("login");
- if (login) {
- setState(() {
- widget.logedin = true;
- });
- }
- // return false;
- }
- ProgressHUD _progressHUD;
- bool _loading = false;
- @override
- void initState() {
- // print(ceklogin());
- if (widget.logedin == true) {
- Navigator.pushReplacement(context,
- MaterialPageRoute(builder: (BuildContext context) => Home()));
- }
- super.initState();
- _progressHUD = new ProgressHUD(
- backgroundColor: Colors.black12,
- color: Colors.white,
- containerColor: Colors.teal,
- borderRadius: 5.0,
- text: 'Loading...',
- );
- firebaseMessaging.configure(
- onLaunch: (Map<String, dynamic> mag){
- print("onlaunch called");
- },
- onResume: (Map<String, dynamic> mag){
- print("on resume called");
- },
- onMessage: (Map<String, dynamic> mag){
- print("called");
- }
- );
- firebaseMessaging.requestNotificationPermissions(
- const IosNotificationSettings(
- sound: true,
- alert: true,
- badge: true
- )
- );
- firebaseMessaging.onIosSettingsRegistered.listen((IosNotificationSettings setting){
- print('IOS setting registered');
- });
- firebaseMessaging.getToken().then((token){
- update(token);
- });
- }
- _LoginData _data = new _LoginData();
- String _validateUsername(String value) {
- if (value.length == 0) {
- return 'Username tidak boleh kosong';
- }
- return null;
- }
- String _validatePassword(String value) {
- if (value.length < 5) {
- return 'password harus lebih dari 5 karakter';
- }
- return null;
- }
- void submit() async {
- if (this._formKey.currentState.validate()) {
- _formKey.currentState.save();
- setState(() {
- _loading = true;
- });
- try {
- Map data = {'username': _data.username, 'password': _data.password};
- var url = Env.ENDPOINT + "login";
- var login = await http.post(url, body: data);
- var jsonData = json.decode(login.body);
- var kodedokter= jsonData["userlog"]["kodedokter"];
- var uslognm = jsonData["userlog"]["uslognm"];
- var password = jsonData["userlog"]["uspass"];
- if (jsonData["process"] == true) {
- setState(() {
- _loading = false;
- });
- // if (jsonData.contains("userlog")) //["userlog"]["kodedokter"] != null) {
- // kodedokter = jsonData["userlog"]["kodedokter"];
- // }
- SharedPreferences prefs = await SharedPreferences.getInstance();
- // LoginResponse loginResponse = new LoginResponse.fromJson(jsonData);
- prefs.setBool("login", true);
- prefs.setString("userid", uslognm);
- prefs.setString("password", password);
- prefs.setString("kodedokter", kodedokter);
- prefs.setString("modul", kodedokter);
- // print("token:"+_token);
- // print(_token+"\n Ini data kiriman: ");
- Map dataToken = {'username': _data.username, 'token': _token};
- print(dataToken);
- var url = Env.ENDPOINT + "saveTokenUser";
- var logintoken = await http.post(url, body: dataToken);
- var jsonDataToken = json.decode(logintoken.body);
- if(jsonDataToken['process'] == true){
- Fluttertoast.showToast(
- msg: "save token failed",
- toastLength: Toast.LENGTH_SHORT,
- gravity: ToastGravity.BOTTOM,
- timeInSecForIos: 1,
- backgroundColor: Colors.grey,
- textColor: Colors.white,
- fontSize: 12.0);
- }else{
- Fluttertoast.showToast(
- msg: "token saved",
- toastLength: Toast.LENGTH_SHORT,
- gravity: ToastGravity.BOTTOM,
- timeInSecForIos: 1,
- backgroundColor: Colors.grey,
- textColor: Colors.white,
- fontSize: 12.0);
- }
- Navigator.pushReplacement(context,
- MaterialPageRoute(builder: (BuildContext context) => Home()));
- Fluttertoast.showToast(
- msg: "Login Success",
- toastLength: Toast.LENGTH_SHORT,
- gravity: ToastGravity.BOTTOM,
- timeInSecForIos: 1,
- backgroundColor: Colors.grey,
- textColor: Colors.white,
- fontSize: 12.0);
- } else {
- setState(() {
- _loading = false;
- });
- Fluttertoast.showToast(
- msg: jsonData["message"] + " " + jsonData["detail"],
- toastLength: Toast.LENGTH_SHORT,
- gravity: ToastGravity.BOTTOM,
- timeInSecForIos: 1,
- backgroundColor: Colors.grey,
- textColor: Colors.white,
- fontSize: 12.0);
- }
- } catch (e) {
- setState(() {
- _loading = false;
- });
- print(e);
- print("gagal login");
- Fluttertoast.showToast(
- msg: "Tejadi kesalahan sistem, tidak bisak koneksi dengan server",
- toastLength: Toast.LENGTH_SHORT,
- gravity: ToastGravity.BOTTOM,
- timeInSecForIos: 1,
- backgroundColor: Colors.grey,
- textColor: Colors.white,
- fontSize: 12.0);
- }
- }
- }
- update(String stoken){
- print("ini token: "+stoken);
- _token = stoken;
- setState(() {
- });
- }
- @override
- Widget build(BuildContext context) {
- return new Stack(
- children: <Widget>[
- // The containers in the background
- new Column(
- children: <Widget>[
- new Container(
- child: Center(
- child: CircleAvatar(
- radius: 40.0,
- backgroundColor: Colors.white,
- child: Image.asset(
- 'assets/images/logo_lira.png',
- height: 60.0,
- )),
- ),
- height: MediaQuery.of(context).size.height * .50,
- color: Colors.teal,
- ),
- new Container(
- height: MediaQuery.of(context).size.height * .50,
- color: Colors.white,
- )
- ],
- ),
- new Container(
- alignment: Alignment.topCenter,
- padding: new EdgeInsets.only(
- top: MediaQuery.of(context).size.height * .40,
- right: 30.0,
- left: 30.0),
- child: new Container(
- height: 350.0,
- width: MediaQuery.of(context).size.width,
- child: new Card(
- shape: RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(10.0)),
- child: Padding(
- padding: EdgeInsets.all(20.0),
- child: ListView(
- children: <Widget>[
- Form(
- key: this._formKey,
- child: Column(
- children: <Widget>[
- TextFormField(
- decoration: InputDecoration(labelText: "Username"),
- validator: this._validateUsername,
- onSaved: (String value) {
- this._data.username = value;
- },
- ),
- TextFormField(
- obscureText: true,
- decoration: InputDecoration(labelText: "Password"),
- validator: this._validatePassword,
- onSaved: (String value) {
- this._data.password = value;
- },
- ),
- ],
- ),
- ),
- SizedBox(
- height: 50.0,
- ),
- RaisedButton(
- shape: new RoundedRectangleBorder(
- borderRadius: new BorderRadius.circular(30.0)),
- color: Colors.teal[300],
- onPressed: () {
- this.submit();
- },
- child: SizedBox(
- width: double.infinity,
- height: 50.0,
- child: Center(
- child: Text("Login",
- style: TextStyle(
- color: Colors.white,
- fontWeight: FontWeight.bold,
- fontSize: 15.0)))),
- ),
- Center(
- child: Text("or"),
- ),
- ],
- ),
- ),
- color: Colors.white,
- elevation: 4.0,
- ),
- ),
- ),
- (_loading == true) ? _progressHUD : Text(""),
- ],
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement