고원빈

[frontend] Sign Up page 구현 완료

......@@ -3,7 +3,7 @@ import 'package:flutter/services.dart';
import '../shared/colors.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import './SignInPage.dart';
import './SignUpPage.dart';
import './SignUpLocal.dart';
class HomePage extends StatefulWidget {
final String pageTitle;
......@@ -125,7 +125,7 @@ class _HomePageState extends State<HomePage> {
context,
MaterialPageRoute(
builder: (BuildContext context) =>
SignUpPage(),
SignUpLocal(),
));
},
child: Text(
......
import 'dart:convert';
import 'package:flutter/material.dart';
class SignUpLocal extends StatefulWidget {
@override
_SignUpLocalState createState() => _SignUpLocalState();
}
class _SignUpLocalState extends State<SignUpLocal> {
final emailController = TextEditingController();
final passwordController = TextEditingController();
final passwordValidController = TextEditingController();
final medicineNameController = TextEditingController();
final medicineFactureController = TextEditingController();
bool _validate = false;
int userRole = 0;
// Initially password is obscure
bool passwordVisible = false;
bool passwordValidationVisible = true;
@override
Widget build(BuildContext context) {
final Size size = MediaQuery.of(context).size;
// int goals = 60;
// int points = 75;
return Scaffold(
backgroundColor: Colors.white,
body: ListView(
children: <Widget>[
Padding(
padding: const EdgeInsets.fromLTRB(20, 25, 20, 0),
child: Row(
children: <Widget>[
Text(
'회원 가입',
textScaleFactor: 1.0,
style: TextStyle(fontSize: 34),
)
],
),
),
Padding(
padding: const EdgeInsets.fromLTRB(20, 10, 20, 0),
child: Row(
children: <Widget>[
Text(
'SmartMedicine 회원가입',
textScaleFactor: 1.0,
style: TextStyle(fontSize: 16),
)
],
),
),
MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
child: Container(
height: size.height * 0.8,
child: Padding(
padding: const EdgeInsets.fromLTRB(20, 5, 20, 20),
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextFormField(
keyboardType: TextInputType.text,
decoration: InputDecoration(
labelText: '이메일',
helperText: '아아디로 사용할 이메일 주소를 입력해주세요.',
),
),
TextFormField(
keyboardType: TextInputType.text,
controller: passwordController,
obscureText:
!passwordVisible, //This will obscure text dynamically
decoration: InputDecoration(
labelText: '비밀번호',
helperText: '비밀번호를 입력해주세요',
// Here is key idea
suffixIcon: IconButton(
icon: Icon(
// Based on passwordVisible state choose the icon
passwordVisible
? Icons.visibility
: Icons.visibility_off,
color: Theme.of(context).primaryColorDark,
),
onPressed: () {
// Update the state i.e. toogle the state of passwordVisible variable
setState(() {
passwordVisible = !passwordVisible;
});
},
),
),
),
TextFormField(
onChanged: (text) {
if (passwordController.text == text) {
setState(() {
_validate = false;
});
} else {
setState(() {
_validate = true;
});
}
},
keyboardType: TextInputType.text,
controller: passwordValidController,
obscureText:
!passwordValidationVisible, //This will obscure text dynamically
decoration: InputDecoration(
labelText: '비밀번호 확인',
helperText: '비밀번호를 확인해주세요',
errorText:
_validate ? '두 비밀번호가 다릅니다. 다시 확인해주세요.' : null,
// Here is key idea
suffixIcon: IconButton(
icon: Icon(
// Based on passwordVisible state choose the icon
passwordValidationVisible
? Icons.visibility
: Icons.visibility_off,
color: Theme.of(context).primaryColorDark,
),
onPressed: () {
// Update the state i.e. toogle the state of passwordVisible variable
setState(() {
passwordValidationVisible =
!passwordValidationVisible;
});
},
),
),
),
TextFormField(
keyboardType: TextInputType.text,
controller: medicineNameController,
decoration: InputDecoration(
labelText: '약 이름',
helperText: '약의 이름을 읿력하세요',
),
),
TextFormField(
keyboardType: TextInputType.text,
controller: medicineFactureController,
decoration: InputDecoration(
labelText: '약 제조사 이름',
helperText: '약 제조사의 이름을 읿력하세요',
),
),
],
),
),
),
),
Container(
height: 80,
padding: const EdgeInsets.fromLTRB(20, 20, 20, 20),
child: RaisedButton(
onPressed: () async {},
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: Colors.blue)),
color: Color(0xff1674f6),
child: Text(
'회원 가입',
textScaleFactor: 1.0,
style: TextStyle(
fontSize: 16,
color: Colors.white,
fontWeight: FontWeight.bold),
),
),
)
],
),
bottomNavigationBar: BottomAppBar(
elevation: 0,
child: Container(
height: 70,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.fromLTRB(70, 0, 70, 0),
child: Text(
'회원 가입시, 이용 야관 및 개인정보 처리 방침에 동의하는 것으로 간주합니다..',
style: TextStyle(fontSize: 12, color: Color(0xff747474)),
textAlign: TextAlign.center,
),
)
],
),
),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import '../shared/styles.dart';
import '../shared/colors.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:page_transition/page_transition.dart';
import '../shared/inputFields.dart';
import './SignInPage.dart';
import './DashBoard.dart';
class SignUpPage extends StatefulWidget {
final String pageTitle;
SignUpPage({Key key, this.pageTitle}) : super(key: key);
@override
_SignUpPageState createState() => _SignUpPageState();
}
class _SignUpPageState extends State<SignUpPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 0,
backgroundColor: white,
title: Text('Sign Up',
style: TextStyle(
color: Colors.grey, fontFamily: 'Poppins', fontSize: 15)),
actions: <Widget>[
FlatButton(
onPressed: () {
// Navigator.of(context).pushNamed('/signin');
Navigator.push(
context,
PageTransition(
type: PageTransitionType.rightToLeft,
child: SignInPage()));
},
child: Text('Sign In', style: contrastText),
)
],
),
body: ListView(
shrinkWrap: true,
children: <Widget>[
Container(
padding: EdgeInsets.only(left: 18, right: 18),
child: Stack(
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text('Welcome to Fryo!', style: h3),
Text('Let\'s get started', style: taglineText),
fryoTextInput('Username'),
fryoTextInput('Full Name'),
fryoEmailInput('Email Address'),
fryoPasswordInput('Password')
],
),
Positioned(
bottom: 15,
right: -15,
child: FlatButton(
onPressed: () {
Navigator.push(
context,
PageTransition(
type: PageTransitionType.rightToLeft,
child: DashBoard()));
},
color: primaryColor,
padding: EdgeInsets.all(13),
shape: CircleBorder(),
child: Icon(Icons.arrow_forward, color: white),
),
)
],
),
height: 360,
width: double.infinity,
decoration: authPlateDecoration,
),
],
));
}
}
......@@ -67,6 +67,27 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
intl:
dependency: transitive
description:
name: intl
url: "https://pub.dartlang.org"
source: hosted
version: "0.16.1"
logging:
dependency: transitive
description:
name: logging
url: "https://pub.dartlang.org"
source: hosted
version: "0.11.4"
mailer:
dependency: "direct main"
description:
name: mailer
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.0"
matcher:
dependency: transitive
description:
......@@ -81,6 +102,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0-nullsafety.3"
mime:
dependency: transitive
description:
name: mime
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.7"
page_transition:
dependency: "direct main"
description:
......@@ -95,6 +123,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0-nullsafety.1"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.dartlang.org"
source: hosted
version: "1.9.2"
sky_engine:
dependency: transitive
description: flutter
......
......@@ -26,6 +26,7 @@ dependencies:
flutter_screenutil: ^0.7.0
page_transition: '^1.1.5'
mailer: '^3.0.4'
dev_dependencies:
......