update login

parent 229a58d9
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class LoadingView {
BuildContext context;
LoadingView(this.context);
show() {
showCupertinoModalPopup(
context: this.context,
builder: (context) => Container(
color: Colors.black87.withOpacity(0.3),
alignment: Alignment.center,
child: CircularProgressIndicator(
valueColor: new AlwaysStoppedAnimation<Color>(Colors.greenAccent),)
),
);
}
hide(){
Navigator.pop(context);
}
}
import 'package:feelverapp/ui/home/home.dart'; import 'package:feelverapp/ui/home/home.dart';
import 'package:feelverapp/ui/login/login_presenter.dart'; import 'package:feelverapp/ui/login/login_presenter.dart';
//import 'package:feelverapp/ui/login/login_presenter.dart'; //import 'package:feelverapp/ui/login/login_presenter.dart';
...@@ -21,9 +22,19 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin { ...@@ -21,9 +22,19 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
presenter = LoginPresenter(this); presenter = LoginPresenter(this);
presenter.letSignIn(); presenter.letSignIn();
_tabController = TabController(length: 2, vsync: this); _tabController = TabController(length: 2, vsync: this);
_tabController.addListener(_handleTabSelection);
// registerBloc = RegisterBloc(this); // registerBloc = RegisterBloc(this);
// loginBloc = LoginBloc(this); // loginBloc = LoginBloc(this);
} }
void _handleTabSelection() {
setState(() {});
}
@override
void dispose() {
super.dispose();
_tabController.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -75,14 +86,27 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin { ...@@ -75,14 +86,27 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
], ],
), ),
SizedBox(height: SizeConfig.getWidth(30)), SizedBox(height: SizeConfig.getWidth(30)),
_formLogin(), new Container(
_phoneLogin(), height: double.maxFinite,
child: new TabBarView(
controller: _tabController,
children: <Widget>[
_formLogin(),
_phoneLogin()
],
),
),
// _phoneLogin(),
], ],
), ),
); );
} }
Widget _formLogin() { Widget _formLogin() {
print("index = " +"${_tabController.index}");
return Container( return Container(
child: Form( child: Form(
child: Column( child: Column(
...@@ -111,7 +135,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin { ...@@ -111,7 +135,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
), ),
), ),
child: TextFormField( child: TextFormField(
// controller: loginBloc.emailCtrl, controller: presenter.emailCtrl,
// validator: loginBloc.validateField, // validator: loginBloc.validateField,
decoration: InputDecoration( decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric( contentPadding: EdgeInsets.symmetric(
...@@ -150,7 +174,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin { ...@@ -150,7 +174,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
BorderRadius.circular(SizeConfig.getPadding(50.0)), BorderRadius.circular(SizeConfig.getPadding(50.0)),
), ),
child: TextFormField( child: TextFormField(
// controller: loginBloc.passCtrl, controller: presenter.passCtrl,
// validator: loginBloc.validateField, // validator: loginBloc.validateField,
decoration: InputDecoration( decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric( contentPadding: EdgeInsets.symmetric(
...@@ -193,6 +217,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin { ...@@ -193,6 +217,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
} }
Widget _phoneLogin() { Widget _phoneLogin() {
print("index = " +"${_tabController.index}");
return Container( return Container(
child: Form( child: Form(
child: Column( child: Column(
...@@ -314,10 +339,12 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin { ...@@ -314,10 +339,12 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
padding: EdgeInsets.all(0), padding: EdgeInsets.all(0),
borderRadius: BorderRadius.all(Radius.circular(50)), borderRadius: BorderRadius.all(Radius.circular(50)),
onPressed: () { onPressed: () {
Navigator.push(
context, presenter.onSignIn();
MaterialPageRoute(builder: (context) => HomePage()), // Navigator.push(
); // context,
// MaterialPageRoute(builder: (context) => HomePage()),
// );
// if (loginBloc.formKey.currentState.validate()) { // if (loginBloc.formKey.currentState.validate()) {
// loginBloc.getLogin(); // loginBloc.getLogin();
// } // }
......
...@@ -2,12 +2,15 @@ import 'dart:developer'; ...@@ -2,12 +2,15 @@ import 'dart:developer';
import 'package:feelverapp/model/Login/login_model.dart'; import 'package:feelverapp/model/Login/login_model.dart';
import 'package:feelverapp/service/Alert.dart';
import 'package:feelverapp/service/Loading.dart';
import 'package:feelverapp/service/api.dart'; import 'package:feelverapp/service/api.dart';
import 'package:feelverapp/service/base_presenter.dart'; import 'package:feelverapp/service/base_presenter.dart';
import 'package:feelverapp/ui/login/login.dart'; import 'package:feelverapp/ui/login/login.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rflutter_alert/rflutter_alert.dart';
...@@ -25,35 +28,110 @@ class LoginPresenter extends BasePresenter<LoginPage> { ...@@ -25,35 +28,110 @@ class LoginPresenter extends BasePresenter<LoginPage> {
LoginPresenter(State<LoginPage> state) : super(state); LoginPresenter(State<LoginPage> state) : super(state);
onSignIn() async { onSignIn() async {
if (formKey.currentState.validate()) { if (emailCtrl.text.isEmpty) {
await letSignIn(); Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context,
title: "กรุณากรอกอีเมล์",
content: Icon(Icons.warning,color: Colors.orange,size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () => Navigator.pop(state.context),
child: Text(
"ตกลง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
}
if (passCtrl.text.isEmpty) {
Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context,
title: "กรุณากรอกรหัสผ่าน",
content: Icon(Icons.warning,color: Colors.orange,size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () => Navigator.pop(state.context),
child: Text(
"ตกลง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
} }
else letSignIn();
} }
letSignIn() async { letSignIn() async {
LoadingView(state.context).show();
_api = Api<LoginModel>(); _api = Api<LoginModel>();
var res = await _api.login({ var res = await _api.login({
"access_type":"portal", "access_type":"portal",
"access_status":"customer", "access_status":"customer",
"email": "api@feelver.com", "email": emailCtrl.text,
'password': "\$J3M{GfzNW7EhwxP", 'password':passCtrl.text
}); });
LoadingView(state.context).hide();
if (res.fail == null) { if (res.fail == null) {
Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context,
title: "เข้าสู่ระบบสำเร็จ",
content: Icon(Icons.check_circle,color: Color.fromRGBO(106, 179, 170, 1),size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () => Navigator.pop(state.context),
child: Text(
"ตกลง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
LoginModel model = res.success; LoginModel model = res.success;
// print("Username ="+"${model.user}"); // print("Username ="+"${model.user}");
print("Token ="+"${model.token}"); print("Token ="+"${model.token}");
} else { } else {
Alert( Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context, context: state.context,
message:'email_or_password_invalid' title: "อีเมล์หรือรหัสผ่านผิด",
); content: Icon(Icons.warning,color: Colors.orange,size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () => Navigator.pop(state.context),
child: Text(
"ลองอีกครั้ง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
} }
} }
......
...@@ -151,6 +151,13 @@ packages: ...@@ -151,6 +151,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.5" version: "2.0.5"
rflutter_alert:
dependency: "direct main"
description:
name: rflutter_alert
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
......
...@@ -26,6 +26,7 @@ dependencies: ...@@ -26,6 +26,7 @@ dependencies:
flutter_screenutil: ^1.0.2 flutter_screenutil: ^1.0.2
http: ^0.12.0+4 http: ^0.12.0+4
json_annotation: ^3.0.1 json_annotation: ^3.0.1
rflutter_alert: ^1.0.3
dev_dependencies: dev_dependencies:
......
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