Skip to content

Commit

Permalink
Merge pull request #62 from TEAMMatchDev/feat/#58
Browse files Browse the repository at this point in the history
[Feat] 회원가입 api 연동 완료 / 회원가입시 사용자 이메일 * 전화번호 중복검사 완료
  • Loading branch information
sujinyang00 authored Nov 7, 2023
2 parents ab8c8c9 + 7121fd3 commit e53ed88
Show file tree
Hide file tree
Showing 5 changed files with 379 additions and 112 deletions.
19 changes: 18 additions & 1 deletion lib/modules/signUp/controller/signup_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,29 @@ import 'package:get/get.dart';
import '../../../model/enum/search_status.dart';

class SignUpController extends GetxController {

RxString signUpId = ''.obs; //id
RxString signUpAuthMail = ''.obs; //id 인증번호
RxBool authEmail = false.obs; ///이메일 인증 완료 여부
RxBool validEmail = false.obs; //이메일 중복검사
RxString signUpPw = ''.obs; //pw
RxString signUpPwConfirm = ''.obs; //pw 확인
RxBool authPhone = false.obs; ///전화번호 인증 완료 여부
RxBool validPw = false.obs; //pw 유효성 검사

RxString signUpName = ''.obs;
RxString signUpGender = ''.obs;
RxString signUpBirth = ''.obs;
RxString signUpPhone = ''.obs; //전화번호
RxString signUpPhoneConfirm = ''.obs; //전화번호 인증번호

//TODO) signUp controller
/// 회원가입 > id, pw, pw확인
Rx<TextEditingController> idTextController = TextEditingController().obs;
Rx<TextEditingController> pwConfirmTextController = TextEditingController().obs;
Rx<TextEditingController> idAuthNumTextController = TextEditingController().obs;
Rx<TextEditingController> pwTextController = TextEditingController().obs;
Rx<TextEditingController> pwConfirmTextController = TextEditingController().obs;


//TODO) 회원가입 > 회원정보
/// 회원정보 > 이름
Expand Down
54 changes: 51 additions & 3 deletions lib/modules/signUp/view/signup_user_info_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:get/get.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get_storage/get_storage.dart';
import 'package:intl/intl.dart'; //Date Format 사용
import 'package:match/model/enum/search_status.dart';
import 'package:match/modules/signUp/controller/signup_controller.dart';
import 'package:match/modules/signUp/view/agreement_view.dart';
import 'package:match/modules/signIn/widget/login_widget.dart';
import 'package:match/modules/signUp/widget/select_gender_widget.dart';
import 'package:match/provider/api/user_auth_api.dart';
import 'package:match/util/components/gloabl_text_field.dart';
import 'package:match/util/components/global_button.dart';
import 'package:match/util/components/global_date_picker.dart';
Expand Down Expand Up @@ -59,6 +62,7 @@ class SignUpInfoScreen extends GetView<SignUpController> {
textController : controller.userNameTextController.value,
onChange: (value) async {
print(">>> 입력한 이름: $value");
controller.signUpName.value = value;
}),
SizedBox(height: 20.h),
Text(
Expand All @@ -70,6 +74,7 @@ class SignUpInfoScreen extends GetView<SignUpController> {
onGenderSelected: (gender) {
print(">>> 선택한 성별: $gender");
controller.selectedItemsgendrState.value = gender;
controller.signUpGender.value = gender;
},
),
SizedBox(height: 20.h),
Expand All @@ -90,7 +95,9 @@ class SignUpInfoScreen extends GetView<SignUpController> {
child: CallSelectBirthBottomSheet(
onBirthSelected: (birth) {
print('>>> 선택한 생년월일: $birth');
//print('>>> 선택한 생년월일: ${controller.signUpBirth.value}');
controller.birthState.value = birth.toString();
controller.signUpBirth.value = birth.toString().replaceAll("-", "");
},
),
),
Expand All @@ -109,10 +116,32 @@ class SignUpInfoScreen extends GetView<SignUpController> {
textController : controller.userPhoneTextController.value,
onChange: (value) async {
print(">>> 입력한 전화번호: $value");
controller.signUpPhone.value = value;
}),
),
SizedBox(width: 10.w),
certinumButton('인증번호 발송'),
CommonButton.phone(
verticalPadding: 10,
isActive: true,
onTap: () async {
var chk = await UserAuthApi.postValidCheckPhone(phone: controller.signUpPhone.value); /// 중복검사
if (controller.signUpPhone.value == '') {
Fluttertoast.showToast(msg: "전화번호를 입력해주세요.");
}
else {
if (chk) {
var result = await UserAuthApi.getPhoneAuth(phone: controller.signUpPhone.value); /// 인증번호 전송
if (result) {
Fluttertoast.showToast(msg: "전화번호로 인증번호를 발송했습니다.");
} else{
Fluttertoast.showToast(msg: "올바른 전화번호 형식이 아닙니다.");
}
} else {
Fluttertoast.showToast(msg: "중복된 전화번호로 가입할 수 없습니다.");
}
}
},
),
],
),
SizedBox(height: 20.h),
Expand All @@ -128,10 +157,24 @@ class SignUpInfoScreen extends GetView<SignUpController> {
textController : controller.userPhoneConfirmTextController.value,
onChange: (value) async {
print(">>> 입력한 인증번호: $value");
controller.signUpPhoneConfirm.value = value;
}),
),
SizedBox(width: 10.w),
certinumButton('인증번호 확인'),
CommonButton.phone(
verticalPadding: 10,
isActive: true,
text: "인증번호 확인",
onTap: () async {
var result = await UserAuthApi.postAuthCheckPhone(phone: controller.signUpPhone.value, code: controller.signUpPhoneConfirm.value);
if (controller.signUpAuthMail.value != '' && result) {
Fluttertoast.showToast(msg: "전화번호 인증에 성공했습니다.");
controller.authPhone.value = true;
} else{
Fluttertoast.showToast(msg: "올바른 인증번호가 아닙니다.");
}
},
),
],
),
SizedBox(height: 27.h),
Expand All @@ -149,7 +192,12 @@ class SignUpInfoScreen extends GetView<SignUpController> {
child: CommonButton.login(
text: "확인",
onTap: () async {
Get.to(AgreementScreen());
if(controller.authPhone.value) {
Get.to(AgreementScreen());
}
else {
Fluttertoast.showToast(msg: "회원정보와 전화번호 인증확인을 해주세요.");
}
},
),
),
Expand Down
Loading

0 comments on commit e53ed88

Please sign in to comment.