import '/flutter_flow/flutter_flow_animations.dart'; import '/flutter_flow/flutter_flow_icon_button.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 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import 'support_form_model.dart'; export 'support_form_model.dart'; class SupportFormWidget extends StatefulWidget { const SupportFormWidget({super.key}); @override State createState() => _SupportFormWidgetState(); } class _SupportFormWidgetState extends State with TickerProviderStateMixin { late SupportFormModel _model; final scaffoldKey = GlobalKey(); final animationsMap = {}; @override void initState() { super.initState(); _model = createModel(context, () => SupportFormModel()); _model.textController1 ??= TextEditingController(); _model.textFieldFocusNode1 ??= FocusNode(); _model.textController2 ??= TextEditingController(); _model.textFieldFocusNode2 ??= FocusNode(); _model.textController3 ??= TextEditingController(); _model.textFieldFocusNode3 ??= FocusNode(); animationsMap.addAll({ 'containerOnPageLoadAnimation1': AnimationInfo( trigger: AnimationTrigger.onPageLoad, effectsBuilder: () => [ FadeEffect( curve: Curves.easeInOut, delay: 0.0.ms, duration: 600.0.ms, begin: 0.0, end: 1.0, ), MoveEffect( curve: Curves.easeInOut, delay: 0.0.ms, duration: 600.0.ms, begin: Offset(0.0, 110.0), end: Offset(0.0, 0.0), ), ], ), 'containerOnPageLoadAnimation2': AnimationInfo( trigger: AnimationTrigger.onPageLoad, effectsBuilder: () => [ FadeEffect( curve: Curves.easeInOut, delay: 0.0.ms, duration: 600.0.ms, begin: 0.0, end: 1.0, ), MoveEffect( curve: Curves.easeInOut, delay: 0.0.ms, duration: 600.0.ms, begin: Offset(0.0, 110.0), end: Offset(0.0, 0.0), ), ], ), 'containerOnPageLoadAnimation3': AnimationInfo( trigger: AnimationTrigger.onPageLoad, effectsBuilder: () => [ FadeEffect( curve: Curves.easeInOut, delay: 0.0.ms, duration: 600.0.ms, begin: 0.0, end: 1.0, ), MoveEffect( curve: Curves.easeInOut, delay: 0.0.ms, duration: 600.0.ms, begin: Offset(0.0, 110.0), end: Offset(0.0, 0.0), ), ], ), }); setupAnimations( animationsMap.values.where((anim) => anim.trigger == AnimationTrigger.onActionTrigger || !anim.applyInitialState), this, ); } @override void dispose() { _model.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return GestureDetector( onTap: () => _model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(_model.unfocusNode) : FocusScope.of(context).unfocus(), child: Scaffold( key: scaffoldKey, backgroundColor: FlutterFlowTheme.of(context).secondaryBackground, appBar: AppBar( backgroundColor: FlutterFlowTheme.of(context).secondaryBackground, automaticallyImplyLeading: false, leading: FlutterFlowIconButton( borderColor: Colors.transparent, borderRadius: 30, borderWidth: 1, buttonSize: 60, icon: Icon( Icons.arrow_back_rounded, color: FlutterFlowTheme.of(context).primaryText, size: 30, ), onPressed: () async { context.pop(); }, ), title: Text( 'Submit Ticket', style: FlutterFlowTheme.of(context).titleLarge.override( fontFamily: 'Outfit', letterSpacing: 0, ), ), actions: [], centerTitle: false, elevation: 0, ), body: SafeArea( top: true, child: Align( alignment: AlignmentDirectional(0, 1), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(16, 12, 16, 0), child: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Welcome to support', style: FlutterFlowTheme.of(context).labelLarge.override( fontFamily: 'Readex Pro', letterSpacing: 0, ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 4, 0, 0), child: Text( 'Submit a bug', style: FlutterFlowTheme.of(context) .headlineMedium .override( fontFamily: 'Outfit', letterSpacing: 0, ), ), ), Row( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 16, 0, 0), child: Container( width: 120, constraints: BoxConstraints( maxWidth: 500, ), decoration: BoxDecoration( color: FlutterFlowTheme.of(context) .secondaryBackground, borderRadius: BorderRadius.circular(12), border: Border.all( color: FlutterFlowTheme.of(context).alternate, width: 2, ), ), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 8, 16, 8, 16), child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Icon( Icons.email_outlined, color: FlutterFlowTheme.of(context).primary, size: 36, ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0, 12, 0, 0), child: Text( 'Email Us', textAlign: TextAlign.center, style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', letterSpacing: 0, ), ), ), ], ), ), ).animateOnPageLoad(animationsMap[ 'containerOnPageLoadAnimation1']!), ), ), Expanded( child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 16, 0, 0), child: Container( width: 120, constraints: BoxConstraints( maxWidth: 500, ), decoration: BoxDecoration( color: FlutterFlowTheme.of(context) .secondaryBackground, borderRadius: BorderRadius.circular(12), border: Border.all( color: FlutterFlowTheme.of(context).alternate, width: 2, ), ), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 8, 16, 8, 16), child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Icon( Icons.search_rounded, color: FlutterFlowTheme.of(context).primary, size: 36, ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0, 12, 0, 0), child: Text( 'Search FAQs', textAlign: TextAlign.center, style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', letterSpacing: 0, ), ), ), ], ), ), ).animateOnPageLoad(animationsMap[ 'containerOnPageLoadAnimation2']!), ), ), ].divide(SizedBox(width: 12)), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 16, 0, 0), child: Column( mainAxisSize: MainAxisSize.max, children: [ TextFormField( controller: _model.textController1, focusNode: _model.textFieldFocusNode1, autofocus: true, obscureText: false, decoration: InputDecoration( labelText: 'Channel Name', labelStyle: FlutterFlowTheme.of(context) .labelMedium .override( fontFamily: 'Readex Pro', letterSpacing: 0, ), hintStyle: FlutterFlowTheme.of(context) .labelMedium .override( fontFamily: 'Readex Pro', letterSpacing: 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), ), contentPadding: EdgeInsetsDirectional.fromSTEB( 16, 12, 16, 12), ), style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', letterSpacing: 0, ), cursorColor: FlutterFlowTheme.of(context).primary, validator: _model.textController1Validator .asValidator(context), ), TextFormField( controller: _model.textController2, focusNode: _model.textFieldFocusNode2, autofocus: true, obscureText: false, decoration: InputDecoration( labelText: 'Channel ID', labelStyle: FlutterFlowTheme.of(context) .labelMedium .override( fontFamily: 'Readex Pro', letterSpacing: 0, ), hintStyle: FlutterFlowTheme.of(context) .labelMedium .override( fontFamily: 'Readex Pro', letterSpacing: 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), ), contentPadding: EdgeInsetsDirectional.fromSTEB( 16, 12, 16, 12), ), style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', letterSpacing: 0, ), cursorColor: FlutterFlowTheme.of(context).primary, validator: _model.textController2Validator .asValidator(context), ), TextFormField( controller: _model.textController3, focusNode: _model.textFieldFocusNode3, autofocus: true, obscureText: false, decoration: InputDecoration( labelStyle: FlutterFlowTheme.of(context) .labelMedium .override( fontFamily: 'Readex Pro', letterSpacing: 0, ), hintText: 'Short Description of what is going on...', hintStyle: FlutterFlowTheme.of(context) .labelMedium .override( fontFamily: 'Readex Pro', letterSpacing: 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), ), contentPadding: EdgeInsetsDirectional.fromSTEB( 16, 24, 16, 12), ), style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', letterSpacing: 0, ), maxLines: 16, minLines: 6, cursorColor: FlutterFlowTheme.of(context).primary, validator: _model.textController3Validator .asValidator(context), ), ].divide(SizedBox(height: 12)), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 16, 0, 0), child: Container( width: double.infinity, constraints: BoxConstraints( maxWidth: 500, ), decoration: BoxDecoration( color: FlutterFlowTheme.of(context).secondaryBackground, borderRadius: BorderRadius.circular(12), border: Border.all( color: FlutterFlowTheme.of(context).alternate, width: 2, ), ), child: Padding( padding: EdgeInsets.all(8), child: Row( mainAxisSize: MainAxisSize.max, children: [ Icon( Icons.add_a_photo_rounded, color: FlutterFlowTheme.of(context).primary, size: 32, ), Padding( padding: EdgeInsetsDirectional.fromSTEB(16, 0, 0, 0), child: Text( 'Upload Screenshot', textAlign: TextAlign.center, style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', letterSpacing: 0, ), ), ), ], ), ), ).animateOnPageLoad( animationsMap['containerOnPageLoadAnimation3']!), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 24, 0, 12), child: FFButtonWidget( onPressed: () { print('Button pressed ...'); }, text: 'Submit Ticket', icon: Icon( Icons.receipt_long, size: 15, ), options: FFButtonOptions( width: double.infinity, height: 48, padding: EdgeInsets.all(0), iconPadding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0), color: FlutterFlowTheme.of(context).primary, textStyle: FlutterFlowTheme.of(context).titleSmall.override( fontFamily: 'Readex Pro', color: Colors.white, letterSpacing: 0, ), elevation: 4, borderSide: BorderSide( color: Colors.transparent, width: 1, ), borderRadius: BorderRadius.circular(60), ), ), ), ], ), ), ), ), ), ), ); } }