Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
feelver
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2F-ART
feelver
Commits
12bd2744
Commit
12bd2744
authored
Jul 16, 2020
by
Mobile : Jetrin Phuekkaew (N'new)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
login update
parent
5f22bd0b
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
206 additions
and
37 deletions
+206
-37
lib/main.dart
+1
-1
lib/ui/login/login.dart
+56
-20
lib/ui/login/login_presenter.dart
+147
-15
lib/ui/splashscreen/splash_screen_page.dart
+2
-1
No files found.
lib/main.dart
View file @
12bd2744
...
...
@@ -21,7 +21,7 @@ class MyApp extends StatelessWidget {
//home: ShopNearbyPlacesPage(),
// home: service_tab(),
home:
Logi
nPage
(),
home:
SplashScree
nPage
(),
);
}
}
lib/ui/login/login.dart
View file @
12bd2744
...
...
@@ -45,7 +45,10 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
}
_setupView
()
{
return
SingleChildScrollView
(
return
Container
(
child:
Column
(
children:
<
Widget
>[
Container
(
...
...
@@ -86,19 +89,28 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
],
),
SizedBox
(
height:
SizeConfig
.
getWidth
(
30
)),
new
Container
(
height:
double
.
maxFinite
,
child:
new
TabBarView
(
controller:
_tabController
,
children:
<
Widget
>[
_formLogin
(),
_phoneLogin
()
Expanded
(
child:
new
Container
(
// height: double.maxFinite,
child:
new
TabBarView
(
controller:
_tabController
,
children:
<
Widget
>[
_formLogin
(),
_phoneLogin
()
// Container(
// color: Colors.red,
// ),
// Container(
// color: Colors.green,
// ),
],
),
],
),
),
),
// _phoneLogin(),
],
),
...
...
@@ -107,7 +119,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
Widget
_formLogin
()
{
print
(
"index = "
+
"
${_tabController.index}
"
);
return
Container
(
return
SingleChildScrollView
(
child:
Form
(
child:
Column
(
children:
<
Widget
>[
...
...
@@ -218,7 +230,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
Widget
_phoneLogin
()
{
print
(
"index = "
+
"
${_tabController.index}
"
);
return
Container
(
return
SingleChildScrollView
(
child:
Form
(
child:
Column
(
children:
<
Widget
>[
...
...
@@ -246,7 +258,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
),
),
child:
TextFormField
(
// controller: loginBloc.email
Ctrl,
controller:
presenter
.
phonenumber
Ctrl
,
// validator: loginBloc.validateField,
decoration:
InputDecoration
(
contentPadding:
EdgeInsets
.
symmetric
(
...
...
@@ -285,7 +297,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
BorderRadius
.
circular
(
SizeConfig
.
getPadding
(
50.0
)),
),
child:
TextFormField
(
// controller: loginBloc
.passCtrl,
controller:
presenter
.
passCtrl
,
// validator: loginBloc.validateField,
decoration:
InputDecoration
(
contentPadding:
EdgeInsets
.
symmetric
(
...
...
@@ -339,8 +351,13 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
padding:
EdgeInsets
.
all
(
0
),
borderRadius:
BorderRadius
.
all
(
Radius
.
circular
(
50
)),
onPressed:
()
{
if
(
_tabController
.
index
==
0
){
presenter
.
letCheckData
();}
else
{
presenter
.
letCheckData_phone
();
presenter
.
onSignIn
();
}
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => HomePage()),
...
...
@@ -403,7 +420,7 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
Widget
_policyText
()
{
return
Column
(
children:
<
Widget
>[
Stack
(
Column
(
children:
<
Widget
>[
Container
(
padding:
EdgeInsets
.
only
(
...
...
@@ -412,16 +429,31 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
top:
SizeConfig
.
getPadding
(
30
)),
child:
Center
(
child:
Text
(
'คุณยอมรับ ข้อกำหนดการใช้งาน และ
นโยบายความเป็นส่วนตัว ของอโกด้าเมื่อดำเนินการต่อ
'
,
'คุณยอมรับ ข้อกำหนดการใช้งาน และ
นโยบาย
'
,
style:
TextStyle
(
fontSize:
SizeConfig
.
getFontSize
(
12
)),
textAlign:
TextAlign
.
center
,
),
),
),
Row
(
children:
<
Widget
>[
Container
(
padding:
EdgeInsets
.
only
(
left:
SizeConfig
.
getPadding
(
30
),
right:
SizeConfig
.
getPadding
(
10
),
),
child:
Center
(
child:
Text
(
'ความเป็นส่วนตัวของอโกด้าเมื่อดำเนินการต่อ'
,
style:
TextStyle
(
fontSize:
SizeConfig
.
getFontSize
(
12
)),
textAlign:
TextAlign
.
center
,
),
),
),
Container
(
margin:
EdgeInsets
.
only
(
right:
SizeConfig
.
getPadding
(
34
),
top:
SizeConfig
.
getPadding
(
47
)),
alignment:
Alignment
.
centerRight
,
child:
GestureDetector
(
onTap:
()
{
...
...
@@ -443,6 +475,10 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
),
),
)
]),
],
),
Container
(
...
...
lib/ui/login/login_presenter.dart
View file @
12bd2744
import
'dart:async'
;
import
'dart:developer'
;
import
'package:feelverapp/model/Login/login_model.dart'
;
...
...
@@ -7,6 +8,7 @@ import 'package:feelverapp/service/Loading.dart';
import
'package:feelverapp/service/api.dart'
;
import
'package:feelverapp/service/base_presenter.dart'
;
import
'package:feelverapp/ui/home/home.dart'
;
import
'package:feelverapp/ui/login/login.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
...
...
@@ -16,10 +18,11 @@ import 'package:rflutter_alert/rflutter_alert.dart';
class
LoginPresenter
extends
BasePresenter
<
LoginPage
>
{
Api
_api
;
Timer
_timer
;
final
formKey
=
GlobalKey
<
FormState
>();
TextEditingController
emailCtrl
=
TextEditingController
();
TextEditingController
passCtrl
=
TextEditingController
();
TextEditingController
phonenumberCtrl
=
TextEditingController
();
...
...
@@ -27,16 +30,40 @@ class LoginPresenter extends BasePresenter<LoginPage> {
LoginPresenter
(
State
<
LoginPage
>
state
)
:
super
(
state
);
onSignIn
()
async
{
if
(
emailCtrl
.
text
.
isEmpty
)
{
Alert
(
/////email Login/////////
letCheckData
()
async
{
// if(!verifyPhoneState){
// throw(allTranslations.text(key: 'please_verify_phone'));
// }
try
{
if
(
emailCtrl
.
text
.
isEmpty
)
throw
(
'กรุณากรอก
\n
อีเมล์'
);
else
if
(
passCtrl
.
text
.
isEmpty
)
throw
(
'กรุณากรอก
\n
รหัสผ่าน'
);
Pattern
pattern
=
r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+"
;
RegExp
regex
=
new
RegExp
(
pattern
);
if
(!
regex
.
hasMatch
(
emailCtrl
.
text
))
throw
(
'รูปแบบอีเมล์
\n
ไม่ถูกต้อง'
);
else
{
await
letSignIn
();
}
}
catch
(
e
)
{
Alert
(
style:
AlertStyle
(
animationType:
AnimationType
.
fromTop
,
isCloseButton:
false
,
),
context:
state
.
context
,
title:
"กรุณากรอกอีเมล์"
,
title:
'
$e
'
,
content:
Icon
(
Icons
.
warning
,
color:
Colors
.
orange
,
size:
80
,),
buttons:
[
DialogButton
(
...
...
@@ -48,8 +75,24 @@ class LoginPresenter extends BasePresenter<LoginPage> {
),
)
]).
show
();
}
if
(
passCtrl
.
text
.
isEmpty
)
{
}
}
letSignIn
()
async
{
LoadingView
(
state
.
context
).
show
();
_api
=
Api
<
LoginModel
>();
var
res
=
await
_api
.
login
({
"access_type"
:
"portal"
,
"access_status"
:
"customer"
,
"email"
:
emailCtrl
.
text
,
'password'
:
passCtrl
.
text
});
LoadingView
(
state
.
context
).
hide
();
if
(
res
.
fail
==
null
)
{
Alert
(
style:
AlertStyle
(
animationType:
AnimationType
.
fromTop
,
...
...
@@ -57,32 +100,75 @@ class LoginPresenter extends BasePresenter<LoginPage> {
),
context:
state
.
context
,
title:
"กรุณากรอกรหัสผ่าน"
,
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
.
pushReplacement
(
state
.
context
,
CupertinoPageRoute
(
builder:
(
_
)
=>
HomePage
())),
child:
Text
(
"ตกลง"
,
style:
TextStyle
(
color:
Colors
.
white
,
fontSize:
20
),
),
)
]).
show
();
LoginModel
model
=
res
.
success
;
// print("Username ="+"${model.user}");
print
(
"Token ="
+
"
${model.token}
"
);
}
else
{
Alert
(
style:
AlertStyle
(
animationType:
AnimationType
.
fromTop
,
isCloseButton:
false
,
),
context:
state
.
context
,
title:
"อีเมล์หรือรหัสผ่าน
\n
ไม่ถูกต้อง"
,
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
{
///////phone log in////////////////
letSignIn_phone
()
async
{
LoadingView
(
state
.
context
).
show
();
_api
=
Api
<
LoginModel
>();
var
res
=
await
_api
.
login
({
"access_type"
:
"portal"
,
"access_status"
:
"customer"
,
"email"
:
email
Ctrl
.
text
,
"email"
:
phonenumber
Ctrl
.
text
,
'password'
:
passCtrl
.
text
});
LoadingView
(
state
.
context
).
hide
();
...
...
@@ -101,7 +187,8 @@ class LoginPresenter extends BasePresenter<LoginPage> {
buttons:
[
DialogButton
(
color:
Color
.
fromRGBO
(
106
,
179
,
170
,
1
),
onPressed:
()
=>
Navigator
.
pop
(
state
.
context
),
onPressed:
()
=>
Navigator
.
pushReplacement
(
state
.
context
,
CupertinoPageRoute
(
builder:
(
_
)
=>
HomePage
())),
child:
Text
(
"ตกลง"
,
style:
TextStyle
(
color:
Colors
.
white
,
fontSize:
20
),
...
...
@@ -120,7 +207,7 @@ class LoginPresenter extends BasePresenter<LoginPage> {
),
context:
state
.
context
,
title:
"
อีเมล์หรือรหัสผ่านผิด
"
,
title:
"
เบอร์โทรศัพท์หรือรหัสผ่าน
\n
ไม่ถูกต้อง
"
,
content:
Icon
(
Icons
.
warning
,
color:
Colors
.
orange
,
size:
80
,),
buttons:
[
DialogButton
(
...
...
@@ -134,6 +221,51 @@ class LoginPresenter extends BasePresenter<LoginPage> {
]).
show
();
}
}
letCheckData_phone
()
async
{
// if(!verifyPhoneState){
// throw(allTranslations.text(key: 'please_verify_phone'));
// }
try
{
if
(
phonenumberCtrl
.
text
.
isEmpty
)
throw
(
'กรุณากรอก
\n
เบอร์โทรศัพท์มือถือ'
);
else
if
(
passCtrl
.
text
.
isEmpty
)
throw
(
'กรุณากรอก
\n
รหัสผ่าน'
);
Pattern
pattern
=
r'(^(?:[+0]9)?[0-9]{10,12}$)'
;
RegExp
regex
=
new
RegExp
(
pattern
);
if
(!
regex
.
hasMatch
(
phonenumberCtrl
.
text
))
throw
(
'รูปแบบเบอร์โทรศัพท์
\n
ไม่ถูกต้อง'
);
else
{
await
letSignIn_phone
();
}
}
catch
(
e
)
{
Alert
(
style:
AlertStyle
(
animationType:
AnimationType
.
fromTop
,
isCloseButton:
false
,
),
context:
state
.
context
,
title:
'
$e
'
,
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
();
}
}
// facebookLogin() async {
...
...
lib/ui/splashscreen/splash_screen_page.dart
View file @
12bd2744
import
'dart:async'
;
import
'package:feelverapp/ui/home/home.dart'
;
import
'package:feelverapp/ui/login/login.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
...
...
@@ -14,7 +15,7 @@ class _SplashScreenPageState extends State<SplashScreenPage> {
@override
void
initState
()
{
_timer
=
new
Timer
(
Duration
(
seconds:
2
),
()
=>
Navigator
.
pushReplacement
(
context
,
CupertinoPageRoute
(
builder:
(
_
)
=>
Home
Page
())));
_timer
=
new
Timer
(
Duration
(
seconds:
2
),
()
=>
Navigator
.
pushReplacement
(
context
,
CupertinoPageRoute
(
builder:
(
_
)
=>
Login
Page
())));
super
.
initState
();
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment