커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
password field 관련 문의
[왕초보] 노코드로 수익형 AI 앱 만들기
2주차
북마크
김*림
댓글
1
추천
0
조회수
12
조회수
12
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


ps field 에 .......이 나타 나는데 이건 어떻게 없어지게 하나요?



스파르타 즉문즉답




작성한 코드 및 에러 메세지

오import '/auth/firebase_auth/auth_util.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/flutter_flow/flutter_flow_widgets.dart';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';


import 'temp_assignment_model.dart';
export 'temp_assignment_model.dart';


class TempAssignmentWidget extends StatefulWidget {
  const TempAssignmentWidget({super.key});


  @override
  State<TempAssignmentWidget> createState() => _TempAssignmentWidgetState();
}


class _TempAssignmentWidgetState extends State<TempAssignmentWidget> {
  late TempAssignmentModel _model;


  final scaffoldKey = GlobalKey<ScaffoldState>();


  @override
  void initState() {
    super.initState();
    _model = createModel(context, () => TempAssignmentModel());


    logFirebaseEvent('screen_view',
        parameters: {'screen_name': 'temp_assignment'});
    _model.textFieldEmailTextController ??= TextEditingController();
    _model.textFieldEmailFocusNode ??= FocusNode();


    _model.textFieldPasswordTextController ??=
        TextEditingController(text: '회원가입 비밀번호');
    _model.textFieldPasswordFocusNode ??= FocusNode();


    _model.logingEmailTextController ??= TextEditingController();
    _model.logingEmailFocusNode ??= FocusNode();


    _model.loginPasswordTextController ??=
        TextEditingController(text: '회원가입 비밀번호');
    _model.loginPasswordFocusNode ??= FocusNode();
  }


  @override
  void dispose() {
    _model.dispose();


    super.dispose();
  }


  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        FocusScope.of(context).unfocus();
        FocusManager.instance.primaryFocus?.unfocus();
      },
      child: Scaffold(
        key: scaffoldKey,
        backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
        appBar: AppBar(
          backgroundColor: FlutterFlowTheme.of(context).primary,
          automaticallyImplyLeading: false,
          title: Text(
            '회원가입 및 로그인',
            style: FlutterFlowTheme.of(context).headlineMedium.override(
                  fontFamily: 'Pretendard',
                  color: Colors.white,
                  fontSize: 22,
                  letterSpacing: 0.0,
                  useGoogleFonts: false,
                ),
          ),
          actions: [],
          centerTitle: false,
          elevation: 2,
        ),
        body: SafeArea(
          top: true,
          child: Column(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Text(
                '회원가입',
                style: FlutterFlowTheme.of(context).bodyMedium.override(
                      fontFamily: 'Pretendard',
                      letterSpacing: 0.0,
                      useGoogleFonts: false,
                    ),
              ),
              Container(
                width: MediaQuery.sizeOf(context).width,
                child: TextFormField(
                  controller: _model.textFieldEmailTextController,
                  focusNode: _model.textFieldEmailFocusNode,
                  autofocus: true,
                  obscureText: false,
                  decoration: InputDecoration(
                    isDense: true,
                    labelText: '회원가입 이메일',
                    labelStyle:
                        FlutterFlowTheme.of(context).labelMedium.override(
                              fontFamily: 'Pretendard',
                              letterSpacing: 0.0,
                              useGoogleFonts: false,
                            ),
                    alignLabelWithHint: false,
                    hintStyle:
                        FlutterFlowTheme.of(context).labelMedium.override(
                              fontFamily: 'Pretendard',
                              letterSpacing: 0.0,
                              useGoogleFonts: false,
                            ),
                    enabledBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).alternate,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: Color(0x00000000),
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    errorBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).error,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    focusedErrorBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).error,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    filled: true,
                    fillColor: FlutterFlowTheme.of(context).secondaryBackground,
                  ),
                  style: FlutterFlowTheme.of(context).bodyMedium.override(
                        fontFamily: 'Pretendard',
                        letterSpacing: 0.0,
                        useGoogleFonts: false,
                        lineHeight: 3,
                      ),
                  cursorColor: FlutterFlowTheme.of(context).primaryText,
                  validator: _model.textFieldEmailTextControllerValidator
                      .asValidator(context),
                ),
              ),
              Container(
                width: MediaQuery.sizeOf(context).width,
                child: TextFormField(
                  controller: _model.textFieldPasswordTextController,
                  focusNode: _model.textFieldPasswordFocusNode,
                  autofocus: true,
                  obscureText: !_model.textFieldPasswordVisibility,
                  decoration: InputDecoration(
                    isDense: true,
                    labelText: '회원가입 비밀번호',
                    labelStyle:
                        FlutterFlowTheme.of(context).labelMedium.override(
                              fontFamily: 'Pretendard',
                              letterSpacing: 0.0,
                              useGoogleFonts: false,
                            ),
                    alignLabelWithHint: false,
                    hintStyle:
                        FlutterFlowTheme.of(context).labelMedium.override(
                              fontFamily: 'Pretendard',
                              letterSpacing: 0.0,
                              useGoogleFonts: false,
                            ),
                    enabledBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).alternate,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: Color(0x00000000),
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    errorBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).error,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    focusedErrorBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).error,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    filled: true,
                    fillColor: FlutterFlowTheme.of(context).secondaryBackground,
                    suffixIcon: InkWell(
                      onTap: () => safeSetState(
                        () => _model.textFieldPasswordVisibility =
                            !_model.textFieldPasswordVisibility,
                      ),
                      focusNode: FocusNode(skipTraversal: true),
                      child: Icon(
                        _model.textFieldPasswordVisibility
                            ? Icons.visibility_outlined
                            : Icons.visibility_off_outlined,
                        size: 22,
                      ),
                    ),
                  ),
                  style: FlutterFlowTheme.of(context).bodyMedium.override(
                        fontFamily: 'Pretendard',
                        letterSpacing: 0.0,
                        useGoogleFonts: false,
                        lineHeight: 3,
                      ),
                  cursorColor: FlutterFlowTheme.of(context).primaryText,
                  validator: _model.textFieldPasswordTextControllerValidator
                      .asValidator(context),
                ),
              ),
              FFButtonWidget(
                onPressed: () async {
                  logFirebaseEvent('TEMP_ASSIGNMENT_Button_signup_ON_TAP');
                  logFirebaseEvent('Button_signup_auth');
                  GoRouter.of(context).prepareAuthEvent();


                  final user = await authManager.createAccountWithEmail(
                    context,
                    _model.textFieldEmailTextController.text,
                    _model.textFieldPasswordTextController.text,
                  );
                  if (user == null) {
                    return;
                  }


                  logFirebaseEvent('Button_signup_navigate_to');


                  context.pushNamedAuth('temp_profile', context.mounted);
                },
                text: '회원가입',
                options: FFButtonOptions(
                  height: 40,
                  padding: EdgeInsetsDirectional.fromSTEB(16, 0, 16, 0),
                  iconPadding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
                  color: FlutterFlowTheme.of(context).primary,
                  textStyle: FlutterFlowTheme.of(context).titleSmall.override(
                        fontFamily: 'Pretendard',
                        color: Colors.white,
                        letterSpacing: 0.0,
                        useGoogleFonts: false,
                      ),
                  elevation: 0,
                  borderRadius: BorderRadius.circular(8),
                ),
              ),
              Text(
                '로그인',
                style: FlutterFlowTheme.of(context).bodyMedium.override(
                      fontFamily: 'Pretendard',
                      letterSpacing: 0.0,
                      useGoogleFonts: false,
                    ),
              ),
              Container(
                width: MediaQuery.sizeOf(context).width,
                child: TextFormField(
                  controller: _model.logingEmailTextController,
                  focusNode: _model.logingEmailFocusNode,
                  autofocus: true,
                  obscureText: false,
                  decoration: InputDecoration(
                    isDense: true,
                    labelText: '로그인 이메일',
                    labelStyle:
                        FlutterFlowTheme.of(context).labelMedium.override(
                              fontFamily: 'Pretendard',
                              letterSpacing: 0.0,
                              useGoogleFonts: false,
                            ),
                    alignLabelWithHint: false,
                    hintStyle:
                        FlutterFlowTheme.of(context).labelMedium.override(
                              fontFamily: 'Pretendard',
                              letterSpacing: 0.0,
                              useGoogleFonts: false,
                            ),
                    enabledBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).alternate,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: Color(0x00000000),
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    errorBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).error,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    focusedErrorBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).error,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    filled: true,
                    fillColor: FlutterFlowTheme.of(context).secondaryBackground,
                  ),
                  style: FlutterFlowTheme.of(context).bodyMedium.override(
                        fontFamily: 'Pretendard',
                        letterSpacing: 0.0,
                        useGoogleFonts: false,
                        lineHeight: 3,
                      ),
                  cursorColor: FlutterFlowTheme.of(context).primaryText,
                  validator: _model.logingEmailTextControllerValidator
                      .asValidator(context),
                ),
              ),
              Container(
                width: MediaQuery.sizeOf(context).width,
                child: TextFormField(
                  controller: _model.loginPasswordTextController,
                  focusNode: _model.loginPasswordFocusNode,
                  autofocus: true,
                  obscureText: !_model.loginPasswordVisibility,
                  decoration: InputDecoration(
                    isDense: true,
                    labelText: '로그인 비밀번호',
                    labelStyle:
                        FlutterFlowTheme.of(context).labelMedium.override(
                              fontFamily: 'Pretendard',
                              letterSpacing: 0.0,
                              useGoogleFonts: false,
                            ),
                    alignLabelWithHint: false,
                    hintStyle:
                        FlutterFlowTheme.of(context).labelMedium.override(
                              fontFamily: 'Pretendard',
                              letterSpacing: 0.0,
                              useGoogleFonts: false,
                            ),
                    enabledBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).alternate,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: Color(0x00000000),
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    errorBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).error,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    focusedErrorBorder: UnderlineInputBorder(
                      borderSide: BorderSide(
                        color: FlutterFlowTheme.of(context).error,
                        width: 2,
                      ),
                      borderRadius: BorderRadius.circular(8),
                    ),
                    filled: true,
                    fillColor: FlutterFlowTheme.of(context).secondaryBackground,
                    suffixIcon: InkWell(
                      onTap: () => safeSetState(
                        () => _model.loginPasswordVisibility =
                            !_model.loginPasswordVisibility,
                      ),
                      focusNode: FocusNode(skipTraversal: true),
                      child: Icon(
                        _model.loginPasswordVisibility
                            ? Icons.visibility_outlined
                            : Icons.visibility_off_outlined,
                        size: 22,
                      ),
                    ),
                  ),
                  style: FlutterFlowTheme.of(context).bodyMedium.override(
                        fontFamily: 'Pretendard',
                        letterSpacing: 0.0,
                        useGoogleFonts: false,
                        lineHeight: 3,
                      ),
                  cursorColor: FlutterFlowTheme.of(context).primaryText,
                  validator: _model.loginPasswordTextControllerValidator
                      .asValidator(context),
                ),
              ),
              FFButtonWidget(
                onPressed: () async {
                  logFirebaseEvent('TEMP_ASSIGNMENT_PAGE_Button_login_ON_TAP');
                  logFirebaseEvent('Button_login_auth');
                  GoRouter.of(context).prepareAuthEvent();


                  final user = await authManager.signInWithEmail(
                    context,
                    _model.logingEmailTextController.text,
                    _model.loginPasswordTextController.text,
                  );
                  if (user == null) {
                    return;
                  }


                  context.goNamedAuth('HomePage', context.mounted);
                },
                text: '로그인',
                options: FFButtonOptions(
                  height: 40,
                  padding: EdgeInsetsDirectional.fromSTEB(16, 0, 16, 0),
                  iconPadding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
                  color: FlutterFlowTheme.of(context).primary,
                  textStyle: FlutterFlowTheme.of(context).titleSmall.override(
                        fontFamily: 'Pretendard',
                        color: Colors.white,
                        letterSpacing: 0.0,
                        useGoogleFonts: false,
                      ),
                  elevation: 0,
                  borderRadius: BorderRadius.circular(8),
                ),
              ),
            ].divide(SizedBox(height: 24)),
          ),
        ),
      ),
    );
  }
}

류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!




취소
 공유
취소
댓글 0
댓글 알림
나의얼굴