
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
2주차 숙제하려고 복습 중인데,
create account에서 다음 화면으로 넘어가질 않는데
어떤 부분을 수정해야 할까요ㅜㅜ 도와주세요.
create account 부분 코드 함께 전달드립니다.

작성한 코드 및 에러 메세지
import '/auth/firebase_auth/auth_util.dart';
import '/flutter_flow/flutter_flow_animations.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/flutter_flow/flutter_flow_widgets.dart';
import 'dart:math';
import 'dart:ui';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_animate/flutter_animate.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';
import 'auth2_create_model.dart';
export 'auth2_create_model.dart';
class Auth2CreateWidget extends StatefulWidget {
const Auth2CreateWidget({super.key});
@override
State<Auth2CreateWidget> createState() => _Auth2CreateWidgetState();
}
class _Auth2CreateWidgetState extends State<Auth2CreateWidget>
with TickerProviderStateMixin {
late Auth2CreateModel _model;
final scaffoldKey = GlobalKey<ScaffoldState>();
final animationsMap = <String, AnimationInfo>{};
@override
void initState() {
super.initState();
_model = createModel(context, () => Auth2CreateModel());
_model.emailAddressTextController ??= TextEditingController();
_model.emailAddressFocusNode ??= FocusNode();
_model.passwordTextController ??= TextEditingController();
_model.passwordFocusNode ??= FocusNode();
animationsMap.addAll({
'containerOnPageLoadAnimation': AnimationInfo(
trigger: AnimationTrigger.onPageLoad,
effectsBuilder: () => [
VisibilityEffect(duration: 1.ms),
FadeEffect(
curve: Curves.easeInOut,
delay: 0.0.ms,
duration: 300.0.ms,
begin: 0.0,
end: 1.0,
),
MoveEffect(
curve: Curves.easeInOut,
delay: 0.0.ms,
duration: 300.0.ms,
begin: Offset(0.0, -140.0),
end: Offset(0.0, 0.0),
),
ScaleEffect(
curve: Curves.easeInOut,
delay: 0.0.ms,
duration: 300.0.ms,
begin: Offset(0.9, 0.9),
end: Offset(1.0, 1.0),
),
TiltEffect(
curve: Curves.easeInOut,
delay: 0.0.ms,
duration: 300.0.ms,
begin: Offset(0.349, 0),
end: Offset(0, 0),
),
],
),
});
}
@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).secondaryBackground,
body: Container(
width: double.infinity,
height: double.infinity,
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
FlutterFlowTheme.of(context).primary,
FlutterFlowTheme.of(context).tertiary
],
stops: [0, 1],
begin: AlignmentDirectional(0.87, -1),
end: AlignmentDirectional(-0.87, 1),
),
),
alignment: AlignmentDirectional(0, -1),
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 70, 0, 32),
child: Container(
width: 200,
height: 70,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
),
alignment: AlignmentDirectional(0, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 0, 12, 0),
child: Icon(
Icons.flourescent_rounded,
color: FlutterFlowTheme.of(context).info,
size: 44,
),
),
Text(
'flow.io',
style: FlutterFlowTheme.of(context)
.displaySmall
.override(
font: GoogleFonts.interTight(),
color: FlutterFlowTheme.of(context).info,
letterSpacing: 0.0,
),
),
],
),
),
),
Padding(
padding: EdgeInsets.all(16),
child: Container(
width: double.infinity,
constraints: BoxConstraints(
maxWidth: 570,
),
decoration: BoxDecoration(
color: FlutterFlowTheme.of(context).secondaryBackground,
boxShadow: [
BoxShadow(
blurRadius: 4,
color: Color(0x33000000),
offset: Offset(
0,
2,
),
)
],
borderRadius: BorderRadius.circular(12),
),
child: Align(
alignment: AlignmentDirectional(0, 0),
child: Padding(
padding: EdgeInsets.all(32),
child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Get Started',
textAlign: TextAlign.center,
style: FlutterFlowTheme.of(context)
.displaySmall
.override(
font: GoogleFonts.interTight(),
letterSpacing: 0.0,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0, 8, 0, 24),
child: Text(
'Create an account by using the form below.',
textAlign: TextAlign.start,
style: FlutterFlowTheme.of(context)
.labelLarge
.override(
font: GoogleFonts.inter(),
letterSpacing: 0.0,
),
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0, 0, 0, 16),
child: Container(
width: double.infinity,
child: TextFormField(
controller: _model.emailAddressTextController,
focusNode: _model.emailAddressFocusNode,
autofocus: true,
autofillHints: [AutofillHints.email],
obscureText: false,
decoration: InputDecoration(
labelText: 'Email',
labelStyle: FlutterFlowTheme.of(context)
.labelLarge
.override(
font: GoogleFonts.inter(),
letterSpacing: 0.0,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.alternate,
width: 2,
),
borderRadius: BorderRadius.circular(12),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.primary,
width: 2,
),
borderRadius: BorderRadius.circular(12),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(context).error,
width: 2,
),
borderRadius: BorderRadius.circular(12),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(context).error,
width: 2,
),
borderRadius: BorderRadius.circular(12),
),
filled: true,
fillColor: FlutterFlowTheme.of(context)
.primaryBackground,
),
style: FlutterFlowTheme.of(context)
.bodyLarge
.override(
font: GoogleFonts.inter(),
letterSpacing: 0.0,
),
keyboardType: TextInputType.emailAddress,
cursorColor:
FlutterFlowTheme.of(context).primary,
validator: _model
.emailAddressTextControllerValidator
.asValidator(context),
),
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0, 0, 0, 16),
child: Container(
width: double.infinity,
child: TextFormField(
controller: _model.passwordTextController,
focusNode: _model.passwordFocusNode,
autofocus: true,
autofillHints: [AutofillHints.password],
obscureText: !_model.passwordVisibility,
decoration: InputDecoration(
labelText: 'Password',
labelStyle: FlutterFlowTheme.of(context)
.labelLarge
.override(
font: GoogleFonts.inter(),
letterSpacing: 0.0,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.alternate,
width: 2,
),
borderRadius: BorderRadius.circular(12),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.primary,
width: 2,
),
borderRadius: BorderRadius.circular(12),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(context).error,
width: 2,
),
borderRadius: BorderRadius.circular(12),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(context).error,
width: 2,
),
borderRadius: BorderRadius.circular(12),
),
filled: true,
fillColor: FlutterFlowTheme.of(context)
.primaryBackground,
suffixIcon: InkWell(
onTap: () => safeSetState(
() => _model.passwordVisibility =
!_model.passwordVisibility,
),
focusNode: FocusNode(skipTraversal: true),
child: Icon(
_model.passwordVisibility
? Icons.visibility_outlined
: Icons.visibility_off_outlined,
color: FlutterFlowTheme.of(context)
.secondaryText,
size: 24,
),
),
),
style: FlutterFlowTheme.of(context)
.bodyLarge
.override(
font: GoogleFonts.inter(),
letterSpacing: 0.0,
),
cursorColor:
FlutterFlowTheme.of(context).primary,
validator: _model
.passwordTextControllerValidator
.asValidator(context),
),
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0, 0, 0, 16),
child: FFButtonWidget(
onPressed: () async {
GoRouter.of(context).prepareAuthEvent();
final user =
await authManager.createAccountWithEmail(
context,
_model.emailAddressTextController.text,
_model.passwordTextController.text,
);
if (user == null) {
return;
}
context.goNamedAuth(
'auth_2_createProfile', context.mounted);
},
text: 'Create Account',
options: FFButtonOptions(
width: double.infinity,
height: 44,
padding: EdgeInsetsDirectional.fromSTEB(
0, 0, 0, 0),
iconPadding: EdgeInsetsDirectional.fromSTEB(
0, 0, 0, 0),
color: FlutterFlowTheme.of(context).primary,
textStyle: FlutterFlowTheme.of(context)
.titleSmall
.override(
font: GoogleFonts.interTight(),
color: Colors.white,
letterSpacing: 0.0,
),
elevation: 3,
borderSide: BorderSide(
color: Colors.transparent,
width: 1,
),
borderRadius: BorderRadius.circular(12),
),
),
),
Align(
alignment: AlignmentDirectional(0, 0),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
16, 0, 16, 24),
child: Text(
'Or sign up with',
textAlign: TextAlign.center,
style: FlutterFlowTheme.of(context)
.labelLarge
.override(
font: GoogleFonts.inter(),
letterSpacing: 0.0,
),
),
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0, 0, 0, 16),
child: FFButtonWidget(
onPressed: () async {
GoRouter.of(context).prepareAuthEvent();
final user = await authManager
.signInWithGoogle(context);
if (user == null) {
return;
}
context.goNamedAuth('Home', context.mounted);
},
text: 'Continue with Google',
icon: FaIcon(
FontAwesomeIcons.google,
size: 20,
),
options: FFButtonOptions(
width: double.infinity,
height: 44,
padding: EdgeInsetsDirectional.fromSTEB(
0, 0, 0, 0),
iconPadding: EdgeInsetsDirectional.fromSTEB(
0, 0, 0, 0),
color: FlutterFlowTheme.of(context)
.secondaryBackground,
textStyle: FlutterFlowTheme.of(context)
.titleSmall
.override(
font: GoogleFonts.interTight(),
color: FlutterFlowTheme.of(context)
.primaryText,
letterSpacing: 0.0,
),
elevation: 0,
borderSide: BorderSide(
color:
FlutterFlowTheme.of(context).alternate,
width: 2,
),
borderRadius: BorderRadius.circular(12),
hoverColor: FlutterFlowTheme.of(context)
.primaryBackground,
),
),
),
isAndroid
? Container()
: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 0, 0, 16),
child: FFButtonWidget(
onPressed: () async {
GoRouter.of(context).prepareAuthEvent();
final user = await authManager
.signInWithApple(context);
if (user == null) {
return;
}
context.goNamedAuth(
'Home', context.mounted);
},
text: 'Continue with Apple',
icon: FaIcon(
FontAwesomeIcons.apple,
size: 20,
),
options: FFButtonOptions(
width: double.infinity,
height: 44,
padding: EdgeInsetsDirectional.fromSTEB(
0, 0, 0, 0),
iconPadding:
EdgeInsetsDirectional.fromSTEB(
0, 0, 0, 0),
color: FlutterFlowTheme.of(context)
.secondaryBackground,
textStyle: FlutterFlowTheme.of(context)
.titleSmall
.override(
font: GoogleFonts.interTight(),
color:
FlutterFlowTheme.of(context)
.primaryText,
letterSpacing: 0.0,
),
elevation: 0,
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.alternate,
width: 2,
),
borderRadius: BorderRadius.circular(12),
hoverColor: FlutterFlowTheme.of(context)
.primaryBackground,
),
),
),
// You will have to add an action on this rich text to go to your login page.
Align(
alignment: AlignmentDirectional(0, 0),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 12, 0, 12),
child: InkWell(
splashColor: Colors.transparent,
focusColor: Colors.transparent,
hoverColor: Colors.transparent,
highlightColor: Colors.transparent,
onTap: () async {
context.pushNamed(
'auth_2_Login',
extra: <String, dynamic>{
kTransitionInfoKey: TransitionInfo(
hasTransition: true,
transitionType:
PageTransitionType.fade,
duration: Duration(milliseconds: 200),
),
},
);
},
child: RichText(
textScaler:
MediaQuery.of(context).textScaler,
text: TextSpan(
children: [
TextSpan(
text: 'Already have an account? ',
style: TextStyle(),
),
TextSpan(
text: 'Sign in here',
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
font: GoogleFonts.inter(),
color:
FlutterFlowTheme.of(context)
.primary,
letterSpacing: 0.0,
fontWeight: FontWeight.w600,
),
)
],
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
font: GoogleFonts.inter(),
letterSpacing: 0.0,
),
),
),
),
),
),
],
),
),
),
).animateOnPageLoad(
animationsMap['containerOnPageLoadAnimation']!),
),
],
),
),
),
),
);
}
}
