fix: Corrigido Abertura do Teclado ao Clicar no Input

This commit is contained in:
Ivan Antunes 2024-09-10 08:43:22 -03:00
parent 6ba19e548c
commit 6eedf2d470
6 changed files with 447 additions and 470 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -8,8 +8,6 @@ import 'package:hub/shared/utils/log_util.dart';
class PetsPageModel extends FlutterFlowModel<PetsPageWidget> { class PetsPageModel extends FlutterFlowModel<PetsPageWidget> {
late final TabController tabBarController; late final TabController tabBarController;
final unfocusNode = FocusNode();
// Controller para o Upload de Arquivos // Controller para o Upload de Arquivos
bool isDataUploading = false; bool isDataUploading = false;
FFUploadedFile uploadedLocalFile = FFUploadedFile uploadedLocalFile =
@ -101,7 +99,22 @@ class PetsPageModel extends FlutterFlowModel<PetsPageWidget> {
textFieldFocusName?.dispose(); textFieldFocusName?.dispose();
textControllerName?.dispose(); textControllerName?.dispose();
textFieldFocusSpecies?.dispose();
textControllerSpecies?.dispose();
textFieldFocusRace?.dispose();
textControllerRace?.dispose();
textFieldFocusColor?.dispose();
textControllerColor?.dispose();
textFieldFocusData?.dispose(); textFieldFocusData?.dispose();
textControllerData?.dispose(); textControllerData?.dispose();
textFieldFocusObservation?.dispose();
textControllerObservation?.dispose();
dropDownValueController1?.dispose();
dropDownValueController2?.dispose();
} }
} }

View File

@ -32,9 +32,9 @@ class PetsPageWidget extends StatefulWidget {
State<PetsPageWidget> createState() => _PetsPageWidgetState(); State<PetsPageWidget> createState() => _PetsPageWidgetState();
} }
class _PetsPageWidgetState extends State<PetsPageWidget> class _PetsPageWidgetState extends State<PetsPageWidget> with SingleTickerProviderStateMixin {
with SingleTickerProviderStateMixin {
late PetsPageModel _model; late PetsPageModel _model;
final _formKey = GlobalKey<FormState>();
@override @override
void initState() { void initState() {
@ -60,36 +60,15 @@ class _PetsPageWidgetState extends State<PetsPageWidget>
_model.textControllerObservation ??= TextEditingController(); _model.textControllerObservation ??= TextEditingController();
_model.textFieldFocusObservation ??= FocusNode(); _model.textFieldFocusObservation ??= FocusNode();
_model.dropDownValueController1 ??= _model.dropDownValueController1 ??= FormFieldController<String>(_model.dropDownValue1 ??= '');
FormFieldController<String>(_model.dropDownValue1 ??= '');
_model.dropDownValueController2 ??= _model.dropDownValueController2 ??= FormFieldController<String>(_model.dropDownValue2 ??= '');
FormFieldController<String>(_model.dropDownValue2 ??= '');
} }
@override @override
void dispose() { void dispose() {
_model.textControllerName?.dispose();
_model.textFieldFocusName?.dispose();
_model.textControllerSpecies?.dispose();
_model.textFieldFocusSpecies?.dispose();
_model.textControllerRace?.dispose();
_model.textFieldFocusRace?.dispose();
_model.textControllerColor?.dispose();
_model.textFieldFocusColor?.dispose();
_model.textControllerData?.dispose();
_model.textFieldFocusData?.dispose();
_model.tabBarController.dispose();
super.dispose(); super.dispose();
} _model.dispose();
void _onTextChanged() {
setState(() {});
} }
@override @override
@ -97,465 +76,450 @@ class _PetsPageWidgetState extends State<PetsPageWidget>
return Scaffold( return Scaffold(
appBar: appBarPets(context), appBar: appBarPets(context),
backgroundColor: FlutterFlowTheme.of(context).primaryBackground, backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
body: tabViewPets( body: tabViewPets(context));
context, _model, _model.tabBarController, safeSetState, setState));
}
}
PreferredSizeWidget appBarPets(BuildContext context) {
return AppBarUtil(title: 'Pets', onBackButtonPressed: () => context.pop());
}
Widget tabViewPets(BuildContext context, PetsPageModel _model, controller,
Function safeSetState, Function setState) {
return TabViewUtil(
context: context,
model: _model,
labelTab1: 'Cadastrar',
labelTab2: 'Consultar',
controller: controller,
widget1: formAddPets(context, _model, safeSetState, setState),
widget2: Center(child: Text('Consultar')),
);
}
Widget formAddPets(BuildContext context, PetsPageModel _model,
Function safeSetState, Function setState) {
bool _isFormValid(BuildContext context) {
log('Validando Formulário');
if (_model.uploadedLocalFile.bytes?.isEmpty ?? true) {
return false;
}
if (_model.textControllerName.text.isEmpty) {
return false;
}
return true;
} }
final _formKey = GlobalKey<FormState>(); PreferredSizeWidget appBarPets(BuildContext context) {
return SingleChildScrollView( return AppBarUtil(title: 'Pets', onBackButtonPressed: () => context.pop());
child: Column( }
mainAxisSize: MainAxisSize.max,
children: [ Widget tabViewPets(BuildContext context) {
Align( return TabViewUtil(
alignment: const AlignmentDirectional(-1.0, 0.0), context: context,
child: Padding( model: _model,
padding: const EdgeInsetsDirectional.fromSTEB(24.0, 20, 0.0, 15), labelTab1: 'Cadastrar',
child: Text( labelTab2: 'Consultar',
FFLocalizations.of(context).getVariableText( controller: _model.tabBarController,
ptText: 'Preencha o formulário com os dados do seu Pet', widget1: formAddPets(context),
enText: 'Fill out the form with your Pet\'s data', widget2: const Center(child: Text('Consultar')),
);
}
Widget formAddPets(BuildContext context) {
return SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
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 com os dados do seu Pet',
enText: 'Fill out the form with your Pet\'s 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),
),
), ),
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),
),
), ),
), ),
), Form(
Form( key: _formKey,
key: _formKey, autovalidateMode: AutovalidateMode.onUserInteraction,
autovalidateMode: AutovalidateMode.onUserInteraction, child: Column(
child: Column( mainAxisSize: MainAxisSize.max,
mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceEvenly,
mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [
children: [ Padding(
Padding( padding: const EdgeInsets.fromLTRB(0, 10, 0, 20),
padding: const EdgeInsets.fromLTRB(0, 10, 0, 20), child: MediaUploadButtonUtil(
child: MediaUploadButtonUtil( uploadedFile: _model.uploadedLocalFile,
uploadedFile: _model.uploadedLocalFile, isUploading: _model.isDataUploading,
isUploading: _model.isDataUploading, labelText: FFLocalizations.of(context).getVariableText(
labelText: FFLocalizations.of(context).getVariableText( ptText: 'Clique para adicionar a foto de seu Pet',
ptText: 'Clique para adicionar a foto de seu Pet', enText: 'Click to add your Pet\'s photo'),
enText: 'Click to add your Pet\'s photo'), ),
), ),
), CustomInputUtil(
CustomInputUtil( controller: _model.textControllerName,
controller: _model.textControllerName, validator:
validator: _model.textControllerNameValidator.asValidator(context),
_model.textControllerNameValidator.asValidator(context), focusNode: _model.textFieldFocusName,
focusNode: _model.textFieldFocusName,
autoFocus: false,
keyboardType: TextInputType.text,
labelText: FFLocalizations.of(context)
.getVariableText(ptText: 'Nome', enText: 'Name'),
hintText: FFLocalizations.of(context)
.getVariableText(ptText: 'Nome', enText: 'Name'),
suffixIcon: Icons.person,
haveMaxLength: true,
maxLength: 80,
),
Padding(
padding: const EdgeInsets.fromLTRB(0, 0, 0, 15),
child: CustomInputUtil(
controller: _model.textControllerSpecies,
focusNode: _model.textFieldFocusSpecies,
labelText: FFLocalizations.of(context).getVariableText(
ptText: 'Espécie', enText: 'Species'),
hintText: FFLocalizations.of(context).getVariableText(
ptText: 'Espécie', enText: 'Species'),
suffixIcon: Icons.pest_control,
haveMaxLength: false,
),
),
Padding(
padding: const EdgeInsets.fromLTRB(0, 0, 0, 15),
child: CustomInputUtil(
controller: _model.textControllerRace,
focusNode: _model.textFieldFocusRace,
labelText: FFLocalizations.of(context) labelText: FFLocalizations.of(context)
.getVariableText(ptText: 'Raça', enText: 'Race'), .getVariableText(ptText: 'Nome', enText: 'Name'),
hintText: FFLocalizations.of(context) hintText: FFLocalizations.of(context)
.getVariableText(ptText: 'Raça', enText: 'Race'), .getVariableText(ptText: 'Nome', enText: 'Name'),
suffixIcon: Icons.pets, suffixIcon: Icons.person,
haveMaxLength: false, haveMaxLength: true,
maxLength: 80,
), ),
), Padding(
Padding( padding: const EdgeInsets.fromLTRB(0, 0, 0, 15),
padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), child: CustomInputUtil(
child: CustomInputUtil( controller: _model.textControllerSpecies,
controller: _model.textControllerColor, focusNode: _model.textFieldFocusSpecies,
focusNode: _model.textFieldFocusColor, labelText: FFLocalizations.of(context).getVariableText(
labelText: FFLocalizations.of(context) ptText: 'Espécie', enText: 'Species'),
.getVariableText(ptText: 'Cor', enText: 'Color'), hintText: FFLocalizations.of(context).getVariableText(
hintText: FFLocalizations.of(context) ptText: 'Espécie', enText: 'Species'),
.getVariableText(ptText: 'Cor', enText: 'Color'), suffixIcon: Icons.pest_control,
suffixIcon: Icons.invert_colors, haveMaxLength: false,
haveMaxLength: false, ),
), ),
), Padding(
Padding( padding: const EdgeInsets.fromLTRB(0, 0, 0, 15),
padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), child: CustomInputUtil(
child: Row( controller: _model.textControllerRace,
mainAxisSize: MainAxisSize.max, focusNode: _model.textFieldFocusRace,
children: [ labelText: FFLocalizations.of(context)
SizedBox( .getVariableText(ptText: 'Raça', enText: 'Race'),
width: MediaQuery.of(context).size.width, hintText: FFLocalizations.of(context)
height: 60.0, .getVariableText(ptText: 'Raça', enText: 'Race'),
child: Stack( suffixIcon: Icons.pets,
children: [ haveMaxLength: false,
Padding( ),
padding: const EdgeInsetsDirectional.fromSTEB( ),
24.0, 0.0, 24.0, 0.0), Padding(
child: TextFormField( padding: const EdgeInsets.fromLTRB(0, 0, 0, 15),
controller: _model.textControllerData, child: CustomInputUtil(
focusNode: _model.textFieldFocusData, controller: _model.textControllerColor,
readOnly: true, focusNode: _model.textFieldFocusColor,
autovalidateMode: labelText: FFLocalizations.of(context)
AutovalidateMode.onUserInteraction, .getVariableText(ptText: 'Cor', enText: 'Color'),
autofocus: false, hintText: FFLocalizations.of(context)
obscureText: false, .getVariableText(ptText: 'Cor', enText: 'Color'),
decoration: InputDecoration( suffixIcon: Icons.invert_colors,
isDense: true, haveMaxLength: false,
labelStyle: FlutterFlowTheme.of(context) ),
.labelMedium ),
.override( Padding(
fontFamily: padding: const EdgeInsets.fromLTRB(0, 0, 0, 15),
FlutterFlowTheme.of(context) child: Row(
.labelMediumFamily, mainAxisSize: MainAxisSize.max,
color: FlutterFlowTheme.of(context) children: [
.primaryText, SizedBox(
letterSpacing: 0.0, width: MediaQuery.of(context).size.width,
useGoogleFonts: GoogleFonts.asMap() height: 60.0,
.containsKey( child: Stack(
FlutterFlowTheme.of(context) children: [
.labelMediumFamily), Padding(
), padding: const EdgeInsetsDirectional.fromSTEB(
hintText: FFLocalizations.of(context) 24.0, 0.0, 24.0, 0.0),
.getVariableText( child: TextFormField(
ptText: 'Data de Nascimento', controller: _model.textControllerData,
enText: 'Birth Date', focusNode: _model.textFieldFocusData,
), readOnly: true,
hintStyle: FlutterFlowTheme.of(context) autovalidateMode:
.labelMedium AutovalidateMode.onUserInteraction,
.override( autofocus: false,
fontFamily: obscureText: false,
FlutterFlowTheme.of(context) decoration: InputDecoration(
.labelMediumFamily, isDense: true,
color: FlutterFlowTheme.of(context) labelStyle: FlutterFlowTheme.of(context)
.primaryText, .labelMedium
letterSpacing: 0.0, .override(
useGoogleFonts: GoogleFonts.asMap() fontFamily:
.containsKey( FlutterFlowTheme.of(context)
FlutterFlowTheme.of(context) .labelMediumFamily,
.labelMediumFamily),
lineHeight: 1.0,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context) color: FlutterFlowTheme.of(context)
.customColor6, .primaryText,
width: 0.5,
),
borderRadius: BorderRadius.circular(10.0),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.primary,
width: 0.5,
),
borderRadius: BorderRadius.circular(10.0),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(context).error,
width: 0.5,
),
borderRadius: BorderRadius.circular(10.0),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(context).error,
width: 0.5,
),
borderRadius: BorderRadius.circular(10.0),
),
suffixIcon: Icon(
Icons.date_range,
color:
FlutterFlowTheme.of(context).accent1,
),
),
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
letterSpacing: 0.0, letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap() useGoogleFonts: GoogleFonts.asMap()
.containsKey( .containsKey(
FlutterFlowTheme.of(context) FlutterFlowTheme.of(context)
.bodyMediumFamily), .labelMediumFamily),
lineHeight: 1.8,
), ),
textAlign: TextAlign.start, hintText: FFLocalizations.of(context)
validator: _model.textControllerDataValidator .getVariableText(
.asValidator(context), ptText: 'Data de Nascimento',
enText: 'Birth Date',
),
hintStyle: FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily:
FlutterFlowTheme.of(context)
.labelMediumFamily,
color: FlutterFlowTheme.of(context)
.primaryText,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.labelMediumFamily),
lineHeight: 1.0,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.customColor6,
width: 0.5,
),
borderRadius: BorderRadius.circular(10.0),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.primary,
width: 0.5,
),
borderRadius: BorderRadius.circular(10.0),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(context).error,
width: 0.5,
),
borderRadius: BorderRadius.circular(10.0),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(context).error,
width: 0.5,
),
borderRadius: BorderRadius.circular(10.0),
),
suffixIcon: Icon(
Icons.date_range,
color:
FlutterFlowTheme.of(context).accent1,
),
),
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
lineHeight: 1.8,
),
textAlign: TextAlign.start,
validator: _model.textControllerDataValidator
.asValidator(context),
),
), ),
), Padding(
Padding( padding: const EdgeInsetsDirectional.fromSTEB(
padding: const EdgeInsetsDirectional.fromSTEB( 24.0, 0.0, 24.0, 0.0),
24.0, 0.0, 24.0, 0.0), child: InkWell(
child: InkWell( splashColor: Colors.transparent,
splashColor: Colors.transparent, focusColor: Colors.transparent,
focusColor: Colors.transparent, hoverColor: Colors.transparent,
hoverColor: Colors.transparent, highlightColor: Colors.transparent,
highlightColor: Colors.transparent, onTap: () async {
onTap: () async { final pickedDate = await showDatePicker(
final pickedDate = await showDatePicker( context: context,
context: context, initialDate: getCurrentTimestamp,
initialDate: getCurrentTimestamp, firstDate: DateTime(1990),
firstDate: DateTime(1990), lastDate: DateTime.now(),
lastDate: DateTime.now(), builder: (context, child) {
builder: (context, child) { return wrapInMaterialDatePickerTheme(
return wrapInMaterialDatePickerTheme( context,
context, child!,
child!, headerBackgroundColor:
headerBackgroundColor: FlutterFlowTheme.of(context)
.primary,
headerForegroundColor:
FlutterFlowTheme.of(context).info,
headerTextStyle: FlutterFlowTheme.of(
context)
.headlineLarge
.override(
fontFamily:
FlutterFlowTheme.of(context) FlutterFlowTheme.of(context)
.primary, .headlineLargeFamily,
headerForegroundColor: fontSize: 32.0,
FlutterFlowTheme.of(context).info, letterSpacing: 0.0,
headerTextStyle: FlutterFlowTheme.of( fontWeight: FontWeight.w600,
context) useGoogleFonts: GoogleFonts
.headlineLarge .asMap()
.override( .containsKey(FlutterFlowTheme
fontFamily: .of(context)
FlutterFlowTheme.of(context) .headlineLargeFamily),
.headlineLargeFamily, ),
fontSize: 32.0, pickerBackgroundColor:
letterSpacing: 0.0, FlutterFlowTheme.of(context)
fontWeight: FontWeight.w600, .primaryBackground,
useGoogleFonts: GoogleFonts pickerForegroundColor:
.asMap() FlutterFlowTheme.of(context)
.containsKey(FlutterFlowTheme .primaryText,
.of(context) selectedDateTimeBackgroundColor:
.headlineLargeFamily), FlutterFlowTheme.of(context)
), .primary,
pickerBackgroundColor: selectedDateTimeForegroundColor:
FlutterFlowTheme.of(context) FlutterFlowTheme.of(context).info,
.primaryBackground, actionButtonForegroundColor:
pickerForegroundColor: FlutterFlowTheme.of(context)
FlutterFlowTheme.of(context) .primaryText,
.primaryText, iconSize: 24.0,
selectedDateTimeBackgroundColor: );
FlutterFlowTheme.of(context) },
.primary, );
selectedDateTimeForegroundColor:
FlutterFlowTheme.of(context).info,
actionButtonForegroundColor:
FlutterFlowTheme.of(context)
.primaryText,
iconSize: 24.0,
);
},
);
if (pickedDate != null) { if (pickedDate != null) {
setState(() { setState(() {
log('Chamou o setState da datinha'); log('Chamou o setState da datinha');
_model.selectedDate = DateTime( _model.selectedDate = DateTime(
pickedDate.year, pickedDate.year,
pickedDate.month, pickedDate.month,
pickedDate.day, pickedDate.day,
); );
log(_model.selectedDate.toString()); log(_model.selectedDate.toString());
_model.textControllerData = _model.textControllerData =
TextEditingController( TextEditingController(
text: dateTimeFormat( text: dateTimeFormat(
'dd/MM/yyyy', 'dd/MM/yyyy',
_model.selectedDate, _model.selectedDate,
locale: FFLocalizations.of(context) locale: FFLocalizations.of(context)
.languageCode, .languageCode,
)); ));
log(_model.textControllerData.text); log(_model.textControllerData.text);
_model.textControllerData?.selection = _model.textControllerData?.selection =
TextSelection.collapsed( TextSelection.collapsed(
offset: _model offset: _model
.textControllerData!.text.length, .textControllerData!.text.length,
); );
}); });
} }
}, },
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: 80.0, height: 80.0,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(10.0),
),
), ),
), ),
), ),
), ],
], ),
),
],
),
),
Align(
alignment: const AlignmentDirectional(-1.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
24.0, 0, 0.0, 15),
child: Text(
FFLocalizations.of(context).getVariableText(
ptText: 'Selecione as opções disponíveis',
enText: 'Select the available options',
),
textAlign: TextAlign.start,
style: FlutterFlowTheme.of(context).bodySmall.override(
fontFamily:
FlutterFlowTheme.of(context).bodySmallFamily,
letterSpacing: 0.0,
fontWeight: FontWeight.w600,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
), ),
), ),
],
),
),
Align(
alignment: const AlignmentDirectional(-1.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
24.0, 0, 0.0, 15),
child: Text(
FFLocalizations.of(context).getVariableText(
ptText: 'Selecione as opções disponíveis',
enText: 'Select the available options',
),
textAlign: TextAlign.start,
style: FlutterFlowTheme.of(context).bodySmall.override(
fontFamily:
FlutterFlowTheme.of(context).bodySmallFamily,
letterSpacing: 0.0,
fontWeight: FontWeight.w600,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
), ),
), ),
), Padding(
Padding( padding: const EdgeInsets.fromLTRB(0, 0, 0, 15),
padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), child: CustomSelect(
child: CustomSelect( options: const ['MAC', 'FEM'],
options: const ['MAC', 'FEM'], controller: _model.dropDownValueController1 ??=
controller: _model.dropDownValueController1 ??= FormFieldController<String>(
FormFieldController<String>( _model.dropDownValue1 ??= ''),
_model.dropDownValue1 ??= ''), changed: (val) => safeSetState(() {
changed: (val) => safeSetState(() { _model.dropDownValue1 = val;
_model.dropDownValue1 = val; }),
}), dropDownValue: _model.dropDownValue1,
dropDownValue: _model.dropDownValue1, optionsLabel: [
optionsLabel: [ FFLocalizations.of(context)
FFLocalizations.of(context) .getVariableText(ptText: 'Macho', enText: 'Male'),
.getVariableText(ptText: 'Macho', enText: 'Male'), FFLocalizations.of(context).getVariableText(
ptText: 'Fêmea', enText: 'Female')
],
hintText: FFLocalizations.of(context).getVariableText(
ptText: 'Selecione o gênero do Pet',
enText: 'Select the gender of the Pet')),
),
Padding(
padding: const EdgeInsets.fromLTRB(0, 0, 0, 15),
child: CustomSelect(
options: const ['MIN', 'PEQ', 'MED', 'GRA', 'GIG'],
controller: _model.dropDownValueController2 ??=
FormFieldController<String>(
_model.dropDownValue2 ??= ''),
changed: (val) => safeSetState(() {
_model.dropDownValue2 = val;
}),
optionsLabel: [
FFLocalizations.of(context)
.getVariableText(ptText: 'Mini', enText: 'Mini'),
FFLocalizations.of(context).getVariableText(
ptText: 'Pequeno', enText: 'Small'),
FFLocalizations.of(context).getVariableText(
ptText: 'Médio', enText: 'Medium'),
FFLocalizations.of(context)
.getVariableText(ptText: 'Grande', enText: 'Big'),
FFLocalizations.of(context).getVariableText(
ptText: 'Gigante', enText: 'Giant'),
],
hintText: FFLocalizations.of(context).getVariableText(
ptText: 'Selecione o porte do Pet',
enText: 'Select the size of the Pet')),
),
Align(
alignment: const AlignmentDirectional(-1.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
24.0, 0, 0.0, 15),
child: Text(
FFLocalizations.of(context).getVariableText( FFLocalizations.of(context).getVariableText(
ptText: 'Fêmea', enText: 'Female') ptText: 'Você tem alguma observação sobre o seu Pet?',
], enText:
hintText: FFLocalizations.of(context).getVariableText( 'Do you have any observations about your Pet?',
ptText: 'Selecione o gênero do Pet', ),
enText: 'Select the gender of the Pet')), textAlign: TextAlign.start,
), style: FlutterFlowTheme.of(context).bodySmall.override(
Padding( fontFamily:
padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), FlutterFlowTheme.of(context).bodySmallFamily,
child: CustomSelect( letterSpacing: 0.0,
options: const ['MIN', 'PEQ', 'MED', 'GRA', 'GIG'], fontWeight: FontWeight.w600,
controller: _model.dropDownValueController2 ??= useGoogleFonts: GoogleFonts.asMap().containsKey(
FormFieldController<String>( FlutterFlowTheme.of(context)
_model.dropDownValue2 ??= ''), .bodyMediumFamily),
changed: (val) => safeSetState(() { ),
_model.dropDownValue2 = val;
}),
optionsLabel: [
FFLocalizations.of(context)
.getVariableText(ptText: 'Mini', enText: 'Mini'),
FFLocalizations.of(context).getVariableText(
ptText: 'Pequeno', enText: 'Small'),
FFLocalizations.of(context).getVariableText(
ptText: 'Médio', enText: 'Medium'),
FFLocalizations.of(context)
.getVariableText(ptText: 'Grande', enText: 'Big'),
FFLocalizations.of(context).getVariableText(
ptText: 'Gigante', enText: 'Giant'),
],
hintText: FFLocalizations.of(context).getVariableText(
ptText: 'Selecione o porte do Pet',
enText: 'Select the size of the Pet')),
),
Align(
alignment: const AlignmentDirectional(-1.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
24.0, 0, 0.0, 15),
child: Text(
FFLocalizations.of(context).getVariableText(
ptText: 'Você tem alguma observação sobre o seu Pet?',
enText:
'Do you have any observations about your Pet?',
), ),
textAlign: TextAlign.start,
style: FlutterFlowTheme.of(context).bodySmall.override(
fontFamily:
FlutterFlowTheme.of(context).bodySmallFamily,
letterSpacing: 0.0,
fontWeight: FontWeight.w600,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
), ),
), ),
), CustomInputUtil(
CustomInputUtil( controller: _model.textControllerObservation,
controller: _model.textControllerObservation, focusNode: _model.textFieldFocusObservation,
focusNode: _model.textFieldFocusObservation, labelText: FFLocalizations.of(context).getVariableText(
labelText: FFLocalizations.of(context).getVariableText( ptText: 'Escreva as suas observações aqui...',
ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'),
enText: 'Write your observations here...'), hintText: FFLocalizations.of(context).getVariableText(
hintText: FFLocalizations.of(context).getVariableText( ptText: 'Escreva as suas observações aqui...',
ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'),
enText: 'Write your observations here...'), suffixIcon: Icons.text_fields,
suffixIcon: Icons.text_fields, haveMaxLength: true,
haveMaxLength: true, maxLength: 80,
maxLength: 80, ),
), Padding(
Padding( padding: const EdgeInsets.fromLTRB(70, 20, 70, 30),
padding: const EdgeInsets.fromLTRB(70, 20, 70, 30), child: SubmitButtonUtil(
child: SubmitButtonUtil( labelText: FFLocalizations.of(context).getVariableText(
labelText: FFLocalizations.of(context).getVariableText( ptText: 'Cadastrar', enText: 'Register'),
ptText: 'Cadastrar', enText: 'Register'), onPressed: () {}),
onPressed: () {}), ),
), ])),
])), ],
], ),
), );
); }
} }

View File

@ -825,18 +825,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.4" version: "10.0.5"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_flutter_testing name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.3" version: "3.0.5"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
@ -913,10 +913,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: material_color_utilities name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.0" version: "0.11.1"
material_symbols_icons: material_symbols_icons:
dependency: "direct main" dependency: "direct main"
description: description:
@ -937,10 +937,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.12.0" version: "1.15.0"
mime: mime:
dependency: transitive dependency: transitive
description: description:
@ -1358,10 +1358,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.0" version: "0.7.2"
timeago: timeago:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1526,10 +1526,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.2.1" version: "14.2.5"
web: web:
dependency: transitive dependency: transitive
description: description: