
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
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) 단축키로 코드를 한 번에 선택할 수 있어요!
