part of 'vehicles_on_the_property.dart'; /// [VehicleRegisterScreen] is a StatefulWidget that displays a form to register a vehicle. // ignore: must_be_immutable class VehicleRegisterScreen extends StatefulWidget { VehicleRegisterScreen(this.model, {super.key}); late VehicleModel model; @override State createState() => _VehicleRegisterScreenState(); } class _VehicleRegisterScreenState extends State { @override Widget build(BuildContext context) { return SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, children: [ _buildHeader(context), _buildBody(context), ], ), ); } Form _buildBody(BuildContext context) { return Form( key: widget.model.registerFormKey, autovalidateMode: AutovalidateMode.onUserInteraction, child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ _buildCustomInput( context: context, controller: widget.model.textFieldControllerLicensePlate!, validator: widget.model.textControllerLicensePlateValidator, focusNode: widget.model.textFieldFocusLicensePlate!, labelText: FFLocalizations.of(context) .getVariableText(ptText: 'Placa', enText: 'License Plate'), hintText: FFLocalizations.of(context) .getVariableText(ptText: 'Placa', enText: 'License Plate'), suffixIcon: Symbols.format_color_text, inputFormatters: [UpperCaseTextFormatter()], maxLength: 7, ), _buildCustomInput( context: context, controller: widget.model.textFieldControllerModel!, validator: widget.model.textControllerModelValidator, focusNode: widget.model.textFieldFocusModel!, labelText: FFLocalizations.of(context) .getVariableText(ptText: 'Modelo', enText: 'Model'), hintText: FFLocalizations.of(context).getVariableText( ptText: 'Ex: Voyage, Ford', enText: 'e.g. Voyage, Ford'), suffixIcon: Symbols.car_repair, inputFormatters: [], ), _buildCustomInput( context: context, controller: widget.model.textFieldControllerColor!, validator: widget.model.textControllerColorValidator, focusNode: widget.model.textFieldFocusColor!, labelText: FFLocalizations.of(context) .getVariableText(ptText: 'Cor', enText: 'Color'), hintText: FFLocalizations.of(context).getVariableText( ptText: 'Ex: Preto, Amarelo, Branco', enText: 'e.g. Black, Yellow, White'), suffixIcon: Symbols.palette, inputFormatters: [], ), Padding( padding: const EdgeInsets.fromLTRB(70, 20, 70, 30), child: SubmitButtonUtil( labelText: FFLocalizations.of(context) .getVariableText(ptText: 'Cadastrar', enText: 'Register'), onPressed: widget.model .isFormValid(context, widget.model.registerFormKey) ? widget.model.registerVehicle : null, ), ), ], ), ); } Widget _buildCustomInput({ required BuildContext context, required TextEditingController controller, required String? Function(BuildContext, String?) validator, required FocusNode focusNode, required String labelText, required String hintText, required IconData suffixIcon, required final List? inputFormatters, int maxLength = 80, }) { return CustomInputUtil( controller: controller, validator: (value) => validator(context, value), focusNode: focusNode, labelText: labelText, hintText: hintText, suffixIcon: suffixIcon, haveMaxLength: true, onChanged: (value) => setState(() {}), inputFormatters: inputFormatters, maxLength: maxLength, ); } Align _buildHeader(BuildContext context) { double limitedHeaderFontSize = LimitedFontSizeUtil.getHeaderFontSize(context); return Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( padding: const EdgeInsetsDirectional.fromSTEB(24.0, 20, 0.0, 15), child: Text( FFLocalizations.of(context).getVariableText( ptText: 'Preencha o formulário de cadastro com os dados do seu veículo', enText: 'Fill out the registration form with your vehicle data', ), textAlign: TextAlign.start, style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), fontSize: limitedHeaderFontSize, ), ), ), ); } }