Updating to latest

This commit is contained in:
FlutterFlow 2024-06-21 13:55:35 +00:00
parent d2807fdaa6
commit 162d3729a0
16 changed files with 3481 additions and 631 deletions

View File

@ -44,8 +44,8 @@
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
6436409627A31CD500820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 6436409227A31CD100820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
6436409C27A31CD700820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 6436409227A31CD000820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@ -225,8 +225,8 @@
6436409C27A31CD800820AF7 /* InfoPlist.strings */ = { 6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
isa = PBXVariantGroup; isa = PBXVariantGroup;
children = ( children = (
6436409627A31CD500820AF7 /* pt */, 6436409227A31CD100820AF7 /* pt */,
6436409C27A31CD700820AF7 /* en */, 6436409227A31CD000820AF7 /* en */,
); );
name = InfoPlist.strings; name = InfoPlist.strings;
sourceTree = "<group>"; sourceTree = "<group>";

View File

@ -1140,6 +1140,8 @@ class GetVisitsCall {
String? userUUID = '', String? userUUID = '',
String? cliID = '', String? cliID = '',
String? atividade = '', String? atividade = '',
int? pageSize,
int? pageNumber,
}) async { }) async {
final baseUrl = PhpGroup.getBaseUrl(); final baseUrl = PhpGroup.getBaseUrl();
@ -1155,6 +1157,8 @@ class GetVisitsCall {
'userUUID': userUUID, 'userUUID': userUUID,
'cliID': cliID, 'cliID': cliID,
'atividade': atividade, 'atividade': atividade,
'pageSize': pageSize,
'pageNumber': pageNumber,
}, },
bodyType: BodyType.X_WWW_FORM_URL_ENCODED, bodyType: BodyType.X_WWW_FORM_URL_ENCODED,
returnBody: true, returnBody: true,

View File

@ -53,6 +53,12 @@ class _ForgotPasswordTemplateComponentWidgetState
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: FlutterFlowTheme.of(context).primaryBackground, color: FlutterFlowTheme.of(context).primaryBackground,
borderRadius: const BorderRadius.only(
bottomLeft: Radius.circular(0.0),
bottomRight: Radius.circular(0.0),
topLeft: Radius.circular(15.0),
topRight: Radius.circular(15.0),
),
), ),
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
@ -151,6 +157,7 @@ class _ForgotPasswordTemplateComponentWidgetState
autofillHints: const [AutofillHints.email], autofillHints: const [AutofillHints.email],
obscureText: false, obscureText: false,
decoration: InputDecoration( decoration: InputDecoration(
isDense: true,
labelText: FFLocalizations.of(context).getText( labelText: FFLocalizations.of(context).getText(
'mtz8l7ft' /* Email */, 'mtz8l7ft' /* Email */,
), ),

View File

@ -7,19 +7,45 @@ class SignInTemplateComponentModel
extends FlutterFlowModel<SignInTemplateComponentWidget> { extends FlutterFlowModel<SignInTemplateComponentWidget> {
/// State fields for stateful widgets in this component. /// State fields for stateful widgets in this component.
final formKey = GlobalKey<FormState>();
// State field(s) for emailAddress widget. // State field(s) for emailAddress widget.
FocusNode? emailAddressFocusNode; FocusNode? emailAddressFocusNode;
TextEditingController? emailAddressTextController; TextEditingController? emailAddressTextController;
String? Function(BuildContext, String?)? emailAddressTextControllerValidator; String? Function(BuildContext, String?)? emailAddressTextControllerValidator;
String? _emailAddressTextControllerValidator(
BuildContext context, String? val) {
if (val == null || val.isEmpty) {
return FFLocalizations.of(context).getText(
'xhnawzcb' /* Campo é necessário */,
);
}
if (!RegExp(kTextValidatorEmailRegex).hasMatch(val)) {
return 'Has to be a valid email address.';
}
return null;
}
// State field(s) for password widget. // State field(s) for password widget.
FocusNode? passwordFocusNode; FocusNode? passwordFocusNode;
TextEditingController? passwordTextController; TextEditingController? passwordTextController;
late bool passwordVisibility; late bool passwordVisibility;
String? Function(BuildContext, String?)? passwordTextControllerValidator; String? Function(BuildContext, String?)? passwordTextControllerValidator;
String? _passwordTextControllerValidator(BuildContext context, String? val) {
if (val == null || val.isEmpty) {
return FFLocalizations.of(context).getText(
'9cs5wlmc' /* Campo é necessário */,
);
}
return null;
}
@override @override
void initState(BuildContext context) { void initState(BuildContext context) {
emailAddressTextControllerValidator = _emailAddressTextControllerValidator;
passwordVisibility = false; passwordVisibility = false;
passwordTextControllerValidator = _passwordTextControllerValidator;
} }
@override @override

View File

@ -202,236 +202,288 @@ class _SignInTemplateComponentWidgetState
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.center, CrossAxisAlignment.center,
children: [ children: [
Padding( Form(
padding: const EdgeInsetsDirectional.fromSTEB( key: _model.formKey,
0.0, 0.0, 0.0, 16.0), autovalidateMode:
child: SizedBox( AutovalidateMode.always,
width: double.infinity, child: Column(
child: TextFormField( mainAxisSize: MainAxisSize.max,
controller: _model children: [
.emailAddressTextController, Padding(
focusNode: padding: const EdgeInsetsDirectional
_model.emailAddressFocusNode, .fromSTEB(
autofocus: false, 0.0, 0.0, 0.0, 16.0),
textCapitalization: child: SizedBox(
TextCapitalization.none, width: double.infinity,
textInputAction: child: TextFormField(
TextInputAction.next, controller: _model
obscureText: false, .emailAddressTextController,
decoration: InputDecoration( focusNode: _model
labelText: .emailAddressFocusNode,
FFLocalizations.of(context) autofocus: false,
.getText( textCapitalization:
'1ltg0ylb' /* Email */, TextCapitalization.none,
), textInputAction:
labelStyle: FlutterFlowTheme.of( TextInputAction.next,
context) obscureText: false,
.labelLarge decoration: InputDecoration(
.override( isDense: true,
fontFamily: labelText:
'Plus Jakarta Sans', FFLocalizations.of(
color: FlutterFlowTheme.of( context)
context) .getText(
.primaryText, '1ltg0ylb' /* Email */,
fontSize: 16.0, ),
letterSpacing: 0.0, labelStyle: FlutterFlowTheme
fontWeight: FontWeight.w500, .of(context)
useGoogleFonts: GoogleFonts .labelLarge
.asMap() .override(
.containsKey( fontFamily:
'Plus Jakarta Sans'), 'Plus Jakarta Sans',
color: FlutterFlowTheme
.of(context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
),
enabledBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.customColor1,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
focusedBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.success,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
errorBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.error,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
focusedErrorBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.error,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
suffixIcon: Icon(
Icons.email,
color:
FlutterFlowTheme.of(
context)
.accent1,
size: 22.0,
),
), ),
enabledBorder: OutlineInputBorder( style: FlutterFlowTheme.of(
borderSide: BorderSide(
color: FlutterFlowTheme.of(
context) context)
.customColor1, .bodyLarge
width: 0.5, .override(
), fontFamily:
borderRadius: 'Plus Jakarta Sans',
BorderRadius.circular(12.0), color:
), FlutterFlowTheme.of(
focusedBorder: OutlineInputBorder( context)
borderSide: BorderSide( .primaryText,
color: FlutterFlowTheme.of( fontSize: 16.0,
context) letterSpacing: 0.0,
.success, fontWeight:
width: 0.5, FontWeight.w500,
), useGoogleFonts: GoogleFonts
borderRadius: .asMap()
BorderRadius.circular(12.0), .containsKey(
), 'Plus Jakarta Sans'),
errorBorder: OutlineInputBorder( ),
borderSide: BorderSide( keyboardType: TextInputType
color: FlutterFlowTheme.of( .emailAddress,
context) validator: _model
.error, .emailAddressTextControllerValidator
width: 0.5, .asValidator(context),
),
borderRadius:
BorderRadius.circular(12.0),
),
focusedErrorBorder:
OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(
context)
.error,
width: 0.5,
),
borderRadius:
BorderRadius.circular(12.0),
),
suffixIcon: Icon(
Icons.email,
color:
FlutterFlowTheme.of(context)
.accent1,
size: 22.0,
),
),
style: FlutterFlowTheme.of(context)
.bodyLarge
.override(
fontFamily:
'Plus Jakarta Sans',
color: FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
),
keyboardType:
TextInputType.emailAddress,
validator: _model
.emailAddressTextControllerValidator
.asValidator(context),
),
),
),
Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 0.0, 0.0, 16.0),
child: SizedBox(
width: double.infinity,
child: TextFormField(
controller:
_model.passwordTextController,
focusNode: _model.passwordFocusNode,
autofocus: false,
textInputAction:
TextInputAction.send,
obscureText:
!_model.passwordVisibility,
decoration: InputDecoration(
labelText:
FFLocalizations.of(context)
.getText(
'2x19ce8k' /* Senha */,
),
labelStyle: FlutterFlowTheme.of(
context)
.labelLarge
.override(
fontFamily:
'Plus Jakarta Sans',
color: FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(
context)
.customColor1,
width: 0.5,
),
borderRadius:
BorderRadius.circular(12.0),
),
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(
color: Color(0xFF1AAB5F),
width: 0.5,
),
borderRadius:
BorderRadius.circular(12.0),
),
errorBorder: OutlineInputBorder(
borderSide: const BorderSide(
color: Color(0xFFFF5963),
width: 0.5,
),
borderRadius:
BorderRadius.circular(12.0),
),
focusedErrorBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color: Color(0xFFFF5963),
width: 0.5,
),
borderRadius:
BorderRadius.circular(12.0),
),
filled: true,
fillColor:
FlutterFlowTheme.of(context)
.primaryBackground,
suffixIcon: InkWell(
onTap: () => setState(
() => _model
.passwordVisibility =
!_model
.passwordVisibility,
),
focusNode: FocusNode(
skipTraversal: true),
child: Icon(
_model.passwordVisibility
? Icons
.visibility_outlined
: Icons
.visibility_off_outlined,
color: FlutterFlowTheme.of(
context)
.accent1,
size: 24.0,
), ),
), ),
), ),
style: FlutterFlowTheme.of(context) Padding(
.bodyLarge padding: const EdgeInsetsDirectional
.override( .fromSTEB(
fontFamily: 0.0, 0.0, 0.0, 16.0),
'Plus Jakarta Sans', child: SizedBox(
color: FlutterFlowTheme.of( width: double.infinity,
child: TextFormField(
controller: _model
.passwordTextController,
focusNode:
_model.passwordFocusNode,
autofocus: false,
textInputAction:
TextInputAction.send,
obscureText: !_model
.passwordVisibility,
decoration: InputDecoration(
isDense: true,
labelText:
FFLocalizations.of(
context)
.getText(
'2x19ce8k' /* Senha */,
),
labelStyle: FlutterFlowTheme
.of(context)
.labelLarge
.override(
fontFamily:
'Plus Jakarta Sans',
color: FlutterFlowTheme
.of(context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
),
enabledBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.customColor1,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
focusedBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color:
Color(0xFF1AAB5F),
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
errorBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color:
Color(0xFFFF5963),
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
focusedErrorBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color:
Color(0xFFFF5963),
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
filled: true,
fillColor:
FlutterFlowTheme.of(
context)
.primaryBackground,
suffixIcon: InkWell(
onTap: () => setState(
() => _model
.passwordVisibility =
!_model
.passwordVisibility,
),
focusNode: FocusNode(
skipTraversal: true),
child: Icon(
_model.passwordVisibility
? Icons
.visibility_outlined
: Icons
.visibility_off_outlined,
color:
FlutterFlowTheme.of(
context)
.accent1,
size: 24.0,
),
),
),
style: FlutterFlowTheme.of(
context) context)
.primaryText, .bodyLarge
fontSize: 16.0, .override(
letterSpacing: 0.0, fontFamily:
fontWeight: FontWeight.w500, 'Plus Jakarta Sans',
useGoogleFonts: GoogleFonts color:
.asMap() FlutterFlowTheme.of(
.containsKey( context)
'Plus Jakarta Sans'), .primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight:
FontWeight.w500,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
),
validator: _model
.passwordTextControllerValidator
.asValidator(context),
), ),
validator: _model ),
.passwordTextControllerValidator ),
.asValidator(context), ],
),
), ),
), ),
Builder( Builder(
@ -448,12 +500,21 @@ class _SignInTemplateComponentWidgetState
.fromSTEB( .fromSTEB(
0.0, 0.0, 0.0, 16.0), 0.0, 0.0, 0.0, 16.0),
child: FFButtonWidget( child: FFButtonWidget(
onPressed: ((_model.emailAddressTextController onPressed: (((_model.emailAddressTextController
.text == .text ==
'') && '') ||
(_model.passwordTextController ((_model.emailAddressFocusNode
.text == ?.hasFocus ??
'')) false) !=
null)) &&
((_model.emailAddressTextController
.text ==
'') ||
((_model.passwordTextController.text ==
'') ||
((_model.passwordFocusNode?.hasFocus ??
false) !=
null))))
? null ? null
: () async { : () async {
await action_blocks await action_blocks
@ -525,7 +586,7 @@ class _SignInTemplateComponentWidgetState
BorderRadius.circular( BorderRadius.circular(
12.0), 12.0),
disabledColor: disabledColor:
const Color(0x951AAB5F), const Color(0xE81AAB5F),
), ),
showLoadingIndicator: false, showLoadingIndicator: false,
), ),
@ -617,10 +678,35 @@ class _SignInTemplateComponentWidgetState
.fromSTEB(0.0, 0.0, .fromSTEB(0.0, 0.0,
0.0, 16.0), 0.0, 16.0),
child: FFButtonWidget( child: FFButtonWidget(
onPressed: () { onPressed: (((_model.emailAddressTextController
print( .text ==
'signInButtonLoginForm pressed ...'); '') ||
}, ((_model.emailAddressFocusNode
?.hasFocus ??
false) !=
null)) &&
((_model.emailAddressTextController
.text ==
'') ||
((_model.passwordTextController.text ==
'') ||
((_model.passwordFocusNode?.hasFocus ??
false) !=
null))))
? null
: () async {
await action_blocks
.singInActionApp(
context,
emailAdress: _model
.emailAddressTextController
.text,
password: _model
.passwordTextController
.text,
);
setState(() {});
},
text: FFLocalizations.of( text: FFLocalizations.of(
context) context)
.getText( .getText(
@ -678,6 +764,8 @@ class _SignInTemplateComponentWidgetState
borderRadius: borderRadius:
BorderRadius BorderRadius
.circular(12.0), .circular(12.0),
disabledColor:
const Color(0xE81AAB5F),
), ),
showLoadingIndicator: showLoadingIndicator:
false, false,

View File

@ -7,28 +7,74 @@ class SignUpTemplateComponentModel
extends FlutterFlowModel<SignUpTemplateComponentWidget> { extends FlutterFlowModel<SignUpTemplateComponentWidget> {
/// State fields for stateful widgets in this component. /// State fields for stateful widgets in this component.
final formKey = GlobalKey<FormState>();
// State field(s) for nameRegisterForm widget. // State field(s) for nameRegisterForm widget.
FocusNode? nameRegisterFormFocusNode; FocusNode? nameRegisterFormFocusNode;
TextEditingController? nameRegisterFormTextController; TextEditingController? nameRegisterFormTextController;
String? Function(BuildContext, String?)? String? Function(BuildContext, String?)?
nameRegisterFormTextControllerValidator; nameRegisterFormTextControllerValidator;
String? _nameRegisterFormTextControllerValidator(
BuildContext context, String? val) {
if (val == null || val.isEmpty) {
return FFLocalizations.of(context).getText(
'3bs10dfq' /* Campo é necessário */,
);
}
if (!RegExp(kTextValidatorUsernameRegex).hasMatch(val)) {
return 'Must start with a letter and can only contain letters, digits and - or _.';
}
return null;
}
// State field(s) for emailRegisterForm widget. // State field(s) for emailRegisterForm widget.
FocusNode? emailRegisterFormFocusNode; FocusNode? emailRegisterFormFocusNode;
TextEditingController? emailRegisterFormTextController; TextEditingController? emailRegisterFormTextController;
String? Function(BuildContext, String?)? String? Function(BuildContext, String?)?
emailRegisterFormTextControllerValidator; emailRegisterFormTextControllerValidator;
String? _emailRegisterFormTextControllerValidator(
BuildContext context, String? val) {
if (val == null || val.isEmpty) {
return FFLocalizations.of(context).getText(
'mlvw63yj' /* Campo é necessário */,
);
}
if (!RegExp(kTextValidatorEmailRegex).hasMatch(val)) {
return 'Has to be a valid email address.';
}
return null;
}
// State field(s) for passwordRegisterForm widget. // State field(s) for passwordRegisterForm widget.
FocusNode? passwordRegisterFormFocusNode; FocusNode? passwordRegisterFormFocusNode;
TextEditingController? passwordRegisterFormTextController; TextEditingController? passwordRegisterFormTextController;
late bool passwordRegisterFormVisibility; late bool passwordRegisterFormVisibility;
String? Function(BuildContext, String?)? String? Function(BuildContext, String?)?
passwordRegisterFormTextControllerValidator; passwordRegisterFormTextControllerValidator;
String? _passwordRegisterFormTextControllerValidator(
BuildContext context, String? val) {
if (val == null || val.isEmpty) {
return FFLocalizations.of(context).getText(
'6nn79lmh' /* Campo é necessário */,
);
}
return null;
}
// Stores action output result for [Action Block - signUpActionApp] action in SignUpButtonRegisterForm widget. // Stores action output result for [Action Block - signUpActionApp] action in SignUpButtonRegisterForm widget.
bool? signUp; bool? signUp;
@override @override
void initState(BuildContext context) { void initState(BuildContext context) {
nameRegisterFormTextControllerValidator =
_nameRegisterFormTextControllerValidator;
emailRegisterFormTextControllerValidator =
_emailRegisterFormTextControllerValidator;
passwordRegisterFormVisibility = false; passwordRegisterFormVisibility = false;
passwordRegisterFormTextControllerValidator =
_passwordRegisterFormTextControllerValidator;
} }
@override @override

View File

@ -206,411 +206,512 @@ class _SignUpTemplateComponentWidgetState
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.center, CrossAxisAlignment.center,
children: [ children: [
Padding( Form(
padding: const EdgeInsetsDirectional.fromSTEB( key: _model.formKey,
0.0, 0.0, 0.0, 16.0), autovalidateMode:
child: SizedBox( AutovalidateMode.disabled,
width: double.infinity, child: Column(
child: TextFormField( mainAxisSize: MainAxisSize.max,
controller: _model children: [
.nameRegisterFormTextController, Padding(
focusNode: _model padding: const EdgeInsetsDirectional
.nameRegisterFormFocusNode, .fromSTEB(
onChanged: (_) => 0.0, 0.0, 0.0, 16.0),
EasyDebounce.debounce( child: SizedBox(
'_model.nameRegisterFormTextController', width: double.infinity,
const Duration(milliseconds: 2000), child: TextFormField(
() => setState(() {}), controller: _model
), .nameRegisterFormTextController,
autofocus: false, focusNode: _model
autofillHints: const [AutofillHints.name], .nameRegisterFormFocusNode,
obscureText: false, onChanged: (_) =>
decoration: InputDecoration( EasyDebounce.debounce(
labelText: '_model.nameRegisterFormTextController',
FFLocalizations.of(context) const Duration(
.getText( milliseconds: 2000),
'3corpwhd' /* Nome */, () => setState(() {}),
),
labelStyle: FlutterFlowTheme.of(
context)
.labelLarge
.override(
fontFamily:
'Plus Jakarta Sans',
color: FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
), ),
enabledBorder: OutlineInputBorder( autofocus: false,
borderSide: BorderSide( autofillHints: const [
color: FlutterFlowTheme.of( AutofillHints.name
context) ],
.customColor1, obscureText: false,
width: 0.5, decoration: InputDecoration(
), isDense: true,
borderRadius: labelText:
BorderRadius.circular(12.0), FFLocalizations.of(
), context)
focusedBorder: OutlineInputBorder( .getText(
borderSide: BorderSide( '3corpwhd' /* Nome */,
color: FlutterFlowTheme.of( ),
context) labelStyle: FlutterFlowTheme
.success, .of(context)
width: 0.5, .labelLarge
), .override(
borderRadius: fontFamily:
BorderRadius.circular(12.0), 'Plus Jakarta Sans',
), color: FlutterFlowTheme
errorBorder: OutlineInputBorder( .of(context)
borderSide: BorderSide( .primaryText,
color: FlutterFlowTheme.of( fontSize: 16.0,
context) letterSpacing: 0.0,
.error, fontWeight:
width: 0.5, FontWeight.w500,
), useGoogleFonts:
borderRadius: GoogleFonts
BorderRadius.circular(12.0), .asMap()
), .containsKey(
focusedErrorBorder: 'Plus Jakarta Sans'),
OutlineInputBorder( ),
borderSide: BorderSide( enabledBorder:
color: FlutterFlowTheme.of( OutlineInputBorder(
context) borderSide: BorderSide(
.error, color:
width: 0.5, FlutterFlowTheme.of(
), context)
borderRadius: .customColor1,
BorderRadius.circular(12.0), width: 0.25,
), ),
filled: true, borderRadius:
fillColor: BorderRadius.circular(
FlutterFlowTheme.of(context) 12.0),
.primaryBackground, ),
suffixIcon: Icon( focusedBorder:
Icons.person, OutlineInputBorder(
color: borderSide: BorderSide(
FlutterFlowTheme.of(context) color:
.accent1, FlutterFlowTheme.of(
size: 22.0, context)
), .success,
), width: 0.25,
style: FlutterFlowTheme.of(context) ),
.bodyLarge borderRadius:
.override( BorderRadius.circular(
fontFamily: 12.0),
'Plus Jakarta Sans', ),
color: FlutterFlowTheme.of( errorBorder:
context) OutlineInputBorder(
.primaryText, borderSide: BorderSide(
fontSize: 16.0, color:
letterSpacing: 0.0, FlutterFlowTheme.of(
fontWeight: FontWeight.w500, context)
useGoogleFonts: GoogleFonts .error,
.asMap() width: 0.25,
.containsKey( ),
'Plus Jakarta Sans'), borderRadius:
), BorderRadius.circular(
keyboardType: TextInputType.name, 12.0),
validator: _model ),
.nameRegisterFormTextControllerValidator focusedErrorBorder:
.asValidator(context), OutlineInputBorder(
), borderSide: BorderSide(
), color:
), FlutterFlowTheme.of(
Padding( context)
padding: const EdgeInsetsDirectional.fromSTEB( .error,
0.0, 0.0, 0.0, 16.0), width: 0.25,
child: SizedBox( ),
width: double.infinity, borderRadius:
child: TextFormField( BorderRadius.circular(
controller: _model 12.0),
.emailRegisterFormTextController, ),
focusNode: _model filled: true,
.emailRegisterFormFocusNode, fillColor:
onChanged: (_) => FlutterFlowTheme.of(
EasyDebounce.debounce( context)
'_model.emailRegisterFormTextController', .primaryBackground,
const Duration(milliseconds: 2000), suffixIcon: Icon(
() => setState(() {}), Icons.person,
), color:
autofocus: false, FlutterFlowTheme.of(
autofillHints: const [ context)
AutofillHints.email .accent1,
], size: 22.0,
obscureText: false, ),
decoration: InputDecoration(
labelText:
FFLocalizations.of(context)
.getText(
'80wonb69' /* Email */,
),
labelStyle: FlutterFlowTheme.of(
context)
.labelLarge
.override(
fontFamily:
'Plus Jakarta Sans',
color: FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
), ),
enabledBorder: OutlineInputBorder( style: FlutterFlowTheme.of(
borderSide: BorderSide(
color: FlutterFlowTheme.of(
context) context)
.primaryText, .bodyLarge
width: 0.5, .override(
fontFamily:
'Plus Jakarta Sans',
color:
FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight:
FontWeight.w500,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
),
keyboardType:
TextInputType.name,
validator: _model
.nameRegisterFormTextControllerValidator
.asValidator(context),
), ),
borderRadius:
BorderRadius.circular(12.0),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(
context)
.success,
width: 0.5,
),
borderRadius:
BorderRadius.circular(12.0),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(
context)
.error,
width: 0.5,
),
borderRadius:
BorderRadius.circular(12.0),
),
focusedErrorBorder:
OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(
context)
.error,
width: 0.5,
),
borderRadius:
BorderRadius.circular(12.0),
),
filled: true,
fillColor:
FlutterFlowTheme.of(context)
.primaryBackground,
suffixIcon: Icon(
Icons.email,
color:
FlutterFlowTheme.of(context)
.accent1,
size: 22.0,
), ),
), ),
style: FlutterFlowTheme.of(context) Padding(
.bodyLarge padding: const EdgeInsetsDirectional
.override( .fromSTEB(
fontFamily: 0.0, 0.0, 0.0, 16.0),
'Plus Jakarta Sans', child: SizedBox(
color: FlutterFlowTheme.of( width: double.infinity,
context) child: TextFormField(
.customColor1, controller: _model
fontSize: 16.0, .emailRegisterFormTextController,
letterSpacing: 0.0, focusNode: _model
fontWeight: FontWeight.w500, .emailRegisterFormFocusNode,
useGoogleFonts: GoogleFonts onChanged: (_) =>
.asMap() EasyDebounce.debounce(
.containsKey( '_model.emailRegisterFormTextController',
'Plus Jakarta Sans'), const Duration(
), milliseconds: 2000),
keyboardType: () => setState(() {}),
TextInputType.emailAddress,
validator: _model
.emailRegisterFormTextControllerValidator
.asValidator(context),
),
),
),
Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 0.0, 0.0, 16.0),
child: SizedBox(
width: double.infinity,
child: TextFormField(
controller: _model
.passwordRegisterFormTextController,
focusNode: _model
.passwordRegisterFormFocusNode,
onChanged: (_) =>
EasyDebounce.debounce(
'_model.passwordRegisterFormTextController',
const Duration(milliseconds: 2000),
() => setState(() {}),
),
autofocus: false,
autofillHints: const [
AutofillHints.password
],
obscureText: !_model
.passwordRegisterFormVisibility,
decoration: InputDecoration(
labelText:
FFLocalizations.of(context)
.getText(
'0firji8l' /* Senha */,
),
labelStyle: FlutterFlowTheme.of(
context)
.labelLarge
.override(
fontFamily:
'Plus Jakarta Sans',
color: FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
), ),
enabledBorder: OutlineInputBorder( autofocus: false,
borderSide: BorderSide( autofillHints: const [
color: FlutterFlowTheme.of( AutofillHints.email
],
obscureText: false,
decoration: InputDecoration(
isDense: true,
labelText:
FFLocalizations.of(
context)
.getText(
'80wonb69' /* Email */,
),
labelStyle: FlutterFlowTheme
.of(context)
.labelLarge
.override(
fontFamily:
'Plus Jakarta Sans',
color: FlutterFlowTheme
.of(context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
),
enabledBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.primaryText,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
focusedBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.success,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
errorBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.error,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
focusedErrorBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.error,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
filled: true,
fillColor:
FlutterFlowTheme.of(
context)
.primaryBackground,
suffixIcon: Icon(
Icons.email,
color:
FlutterFlowTheme.of(
context)
.accent1,
size: 22.0,
),
),
style: FlutterFlowTheme.of(
context) context)
.customColor1, .bodyLarge
width: 0.5, .override(
), fontFamily:
borderRadius: 'Plus Jakarta Sans',
BorderRadius.circular(12.0), color:
), FlutterFlowTheme.of(
focusedBorder: OutlineInputBorder( context)
borderSide: const BorderSide( .customColor1,
color: Color(0xFF1AAB5F), fontSize: 16.0,
width: 0.5, letterSpacing: 0.0,
), fontWeight:
borderRadius: FontWeight.w500,
BorderRadius.circular(12.0), useGoogleFonts: GoogleFonts
), .asMap()
errorBorder: OutlineInputBorder( .containsKey(
borderSide: const BorderSide( 'Plus Jakarta Sans'),
color: Color(0xFFFF5963), ),
width: 0.5, keyboardType: TextInputType
), .emailAddress,
borderRadius: validator: _model
BorderRadius.circular(12.0), .emailRegisterFormTextControllerValidator
), .asValidator(context),
focusedErrorBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color: Color(0xFFFF5963),
width: 0.5,
),
borderRadius:
BorderRadius.circular(12.0),
),
filled: true,
fillColor:
FlutterFlowTheme.of(context)
.primaryBackground,
suffixIcon: InkWell(
onTap: () => setState(
() => _model
.passwordRegisterFormVisibility =
!_model
.passwordRegisterFormVisibility,
),
focusNode: FocusNode(
skipTraversal: true),
child: Icon(
_model.passwordRegisterFormVisibility
? Icons
.visibility_outlined
: Icons
.visibility_off_outlined,
color: FlutterFlowTheme.of(
context)
.accent1,
size: 24.0,
), ),
), ),
), ),
style: FlutterFlowTheme.of(context) Padding(
.bodyLarge padding: const EdgeInsetsDirectional
.override( .fromSTEB(
fontFamily: 0.0, 0.0, 0.0, 16.0),
'Plus Jakarta Sans', child: SizedBox(
color: FlutterFlowTheme.of( width: double.infinity,
child: TextFormField(
controller: _model
.passwordRegisterFormTextController,
focusNode: _model
.passwordRegisterFormFocusNode,
onChanged: (_) =>
EasyDebounce.debounce(
'_model.passwordRegisterFormTextController',
const Duration(
milliseconds: 2000),
() => setState(() {}),
),
autofocus: false,
autofillHints: const [
AutofillHints.password
],
obscureText: !_model
.passwordRegisterFormVisibility,
decoration: InputDecoration(
isDense: true,
labelText:
FFLocalizations.of(
context)
.getText(
'0firji8l' /* Senha */,
),
labelStyle: FlutterFlowTheme
.of(context)
.labelLarge
.override(
fontFamily:
'Plus Jakarta Sans',
color: FlutterFlowTheme
.of(context)
.primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
),
enabledBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
FlutterFlowTheme.of(
context)
.customColor1,
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
focusedBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color:
Color(0xFF1AAB5F),
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
errorBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color:
Color(0xFFFF5963),
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
focusedErrorBorder:
OutlineInputBorder(
borderSide: const BorderSide(
color:
Color(0xFFFF5963),
width: 0.25,
),
borderRadius:
BorderRadius.circular(
12.0),
),
filled: true,
fillColor:
FlutterFlowTheme.of(
context)
.primaryBackground,
suffixIcon: InkWell(
onTap: () => setState(
() => _model
.passwordRegisterFormVisibility =
!_model
.passwordRegisterFormVisibility,
),
focusNode: FocusNode(
skipTraversal: true),
child: Icon(
_model.passwordRegisterFormVisibility
? Icons
.visibility_outlined
: Icons
.visibility_off_outlined,
color:
FlutterFlowTheme.of(
context)
.accent1,
size: 24.0,
),
),
),
style: FlutterFlowTheme.of(
context) context)
.primaryText, .bodyLarge
fontSize: 16.0, .override(
letterSpacing: 0.0, fontFamily:
fontWeight: FontWeight.w500, 'Plus Jakarta Sans',
useGoogleFonts: GoogleFonts color:
.asMap() FlutterFlowTheme.of(
.containsKey( context)
'Plus Jakarta Sans'), .primaryText,
fontSize: 16.0,
letterSpacing: 0.0,
fontWeight:
FontWeight.w500,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
'Plus Jakarta Sans'),
),
validator: _model
.passwordRegisterFormTextControllerValidator
.asValidator(context),
), ),
validator: _model ),
.passwordRegisterFormTextControllerValidator ),
.asValidator(context), ],
),
), ),
), ),
Padding( Padding(
padding: const EdgeInsetsDirectional.fromSTEB( padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 0.0, 0.0, 16.0), 0.0, 0.0, 0.0, 16.0),
child: FFButtonWidget( child: FFButtonWidget(
onPressed: () async { onPressed: (((_model.nameRegisterFormTextController
var shouldSetState = false; .text !=
_model.signUp = await action_blocks '') ||
.signUpActionApp( ((_model.nameRegisterFormFocusNode?.hasFocus ??
context, false) !=
name: _model null)) &&
.nameRegisterFormTextController ((_model.emailRegisterFormTextController
.text, .text !=
passwd: _model '') ||
.passwordRegisterFormTextController ((_model.emailRegisterFormFocusNode
.text, ?.hasFocus ??
email: _model false) !=
.emailRegisterFormTextController null)) &&
.text, ((_model.passwordRegisterFormTextController
device: FFAppState().device, .text !=
); '') ||
shouldSetState = true; ((_model.passwordRegisterFormFocusNode
if (_model.signUp == true) { ?.hasFocus ??
await widget false) !=
.toggleOnBoardingPageAction null)))
?.call( ? null
'SignIn', : () async {
); var shouldSetState = false;
} else { _model.signUp =
if (shouldSetState) { await action_blocks
setState(() {}); .signUpActionApp(
} context,
return; name: _model
} .nameRegisterFormTextController
.text,
passwd: _model
.passwordRegisterFormTextController
.text,
email: _model
.emailRegisterFormTextController
.text,
device: FFAppState().device,
);
shouldSetState = true;
if (_model.signUp == true) {
await widget
.toggleOnBoardingPageAction
?.call(
'SignIn',
);
} else {
if (shouldSetState) {
setState(() {});
}
return;
}
if (shouldSetState) { if (shouldSetState) {
setState(() {}); setState(() {});
} }
}, },
text: FFLocalizations.of(context) text: FFLocalizations.of(context)
.getText( .getText(
'rnvdwzei' /* Cadastrar-se */, 'rnvdwzei' /* Cadastrar-se */,

View File

@ -414,6 +414,84 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
'en': '', 'en': '',
}, },
}, },
// acessHistoryPage
{
'rjdp7j73': {
'pt': 'Visitantes',
'en': 'Visitors',
},
'nhxs49l9': {
'pt': 'Visitante: ',
'en': 'Visitor:',
},
'x9jg3kfx': {
'pt': 'Início em: ',
'en': 'Beginning in:',
},
'dh8ib64e': {
'pt': 'Fim em: ',
'en': 'End in:',
},
'1qa1ok6g': {
'pt': 'Todos',
'en': 'All',
},
'ftl6katl': {
'pt': 'Visitante: ',
'en': 'Visitor:',
},
'dbquxozy': {
'pt': 'Início em: ',
'en': 'Beginning in:',
},
'gjw5vcc6': {
'pt': 'Fim em: ',
'en': 'End in:',
},
'rvac7h59': {
'pt': 'Moradores',
'en': 'Residents',
},
'0xbh5f3a': {
'pt': 'Visitante: ',
'en': 'Visitor:',
},
'gq3pp39j': {
'pt': 'Início em: ',
'en': 'Beginning in:',
},
'7iaxwb8o': {
'pt': 'Fim em: ',
'en': 'End in:',
},
'5uzkio93': {
'pt': 'Home',
'en': '',
},
},
// liberationHistory
{
'dy0mx15f': {
'pt': 'Label here...',
'en': '',
},
'f77je6tr': {
'pt': 'Visitante: ',
'en': 'Visitor:',
},
'dkzewokx': {
'pt': 'Início em: ',
'en': 'Beginning in:',
},
'qi4mjhtw': {
'pt': 'Fim em: ',
'en': 'End in:',
},
'1skj43ye': {
'pt': 'Home',
'en': '',
},
},
// visitorDetailsModalTemplateComponent // visitorDetailsModalTemplateComponent
{ {
'kqzf7nx2': { 'kqzf7nx2': {
@ -723,6 +801,22 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
'pt': 'Senha', 'pt': 'Senha',
'en': 'Password', 'en': 'Password',
}, },
'xhnawzcb': {
'pt': 'Campo é necessário',
'en': 'Field is required',
},
'2ib9bf67': {
'pt': 'Please choose an option from the dropdown',
'en': '',
},
'9cs5wlmc': {
'pt': 'Campo é necessário',
'en': 'Field is required',
},
'rkxwb0sg': {
'pt': 'Please choose an option from the dropdown',
'en': '',
},
'k44tm7wo': { 'k44tm7wo': {
'pt': 'Entrar', 'pt': 'Entrar',
'en': 'Sign-In', 'en': 'Sign-In',
@ -774,6 +868,30 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
'pt': 'Senha', 'pt': 'Senha',
'en': 'Password', 'en': 'Password',
}, },
'3bs10dfq': {
'pt': 'Campo é necessário',
'en': 'Field is required',
},
'ph22karc': {
'pt': 'Please choose an option from the dropdown',
'en': '',
},
'mlvw63yj': {
'pt': 'Campo é necessário',
'en': 'Field is required',
},
'z0bv6wi2': {
'pt': 'Please choose an option from the dropdown',
'en': '',
},
'6nn79lmh': {
'pt': 'Campo é necessário',
'en': 'Field is required',
},
'rcikqhf1': {
'pt': 'Please choose an option from the dropdown',
'en': '',
},
'rnvdwzei': { 'rnvdwzei': {
'pt': 'Cadastrar-se', 'pt': 'Cadastrar-se',
'en': 'Sign-Up', 'en': 'Sign-Up',

View File

@ -42,7 +42,7 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
), ),
), ),
) )
: const PeopleOnThePropertyPageWidget(), : const LiberationHistoryWidget(),
routes: [ routes: [
FFRoute( FFRoute(
name: '_initialize', name: '_initialize',
@ -57,7 +57,7 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
), ),
), ),
) )
: const PeopleOnThePropertyPageWidget(), : const LiberationHistoryWidget(),
), ),
FFRoute( FFRoute(
name: 'homePage', name: 'homePage',
@ -127,6 +127,16 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
name: 'peopleOnThePropertyPage', name: 'peopleOnThePropertyPage',
path: '/peopleOnThePropertyPage', path: '/peopleOnThePropertyPage',
builder: (context, params) => const PeopleOnThePropertyPageWidget(), builder: (context, params) => const PeopleOnThePropertyPageWidget(),
),
FFRoute(
name: 'acessHistoryPage',
path: '/acessHistoryPage',
builder: (context, params) => const AcessHistoryPageWidget(),
),
FFRoute(
name: 'liberationHistory',
path: '/liberationHistory',
builder: (context, params) => const LiberationHistoryWidget(),
) )
].map((r) => r.toRoute(appStateNotifier)).toList(), ].map((r) => r.toRoute(appStateNotifier)).toList(),
); );

View File

@ -12,3 +12,7 @@ export '/pages/fast_pass_page/fast_pass_page_widget.dart'
show FastPassPageWidget; show FastPassPageWidget;
export '/pages/people_on_the_property_page/people_on_the_property_page_widget.dart' export '/pages/people_on_the_property_page/people_on_the_property_page_widget.dart'
show PeopleOnThePropertyPageWidget; show PeopleOnThePropertyPageWidget;
export '/pages/acess_history_page/acess_history_page_widget.dart'
show AcessHistoryPageWidget;
export '/pages/liberation_history/liberation_history_widget.dart'
show LiberationHistoryWidget;

View File

@ -0,0 +1,22 @@
import '/flutter_flow/flutter_flow_util.dart';
import 'acess_history_page_widget.dart' show AcessHistoryPageWidget;
import 'package:flutter/material.dart';
class AcessHistoryPageModel extends FlutterFlowModel<AcessHistoryPageWidget> {
/// State fields for stateful widgets in this page.
final unfocusNode = FocusNode();
// State field(s) for TabBar widget.
TabController? tabBarController;
int get tabBarCurrentIndex =>
tabBarController != null ? tabBarController!.index : 0;
@override
void initState(BuildContext context) {}
@override
void dispose() {
unfocusNode.dispose();
tabBarController?.dispose();
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
import '/flutter_flow/flutter_flow_util.dart';
import 'liberation_history_widget.dart' show LiberationHistoryWidget;
import 'package:flutter/material.dart';
class LiberationHistoryModel extends FlutterFlowModel<LiberationHistoryWidget> {
/// State fields for stateful widgets in this page.
final unfocusNode = FocusNode();
// State field(s) for TextField widget.
FocusNode? textFieldFocusNode;
TextEditingController? textController;
String? Function(BuildContext, String?)? textControllerValidator;
@override
void initState(BuildContext context) {}
@override
void dispose() {
unfocusNode.dispose();
textFieldFocusNode?.dispose();
textController?.dispose();
}
}

View File

@ -0,0 +1,680 @@
import '/backend/api_requests/api_calls.dart';
import '/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/flutter_flow/custom_functions.dart' as functions;
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';
import 'liberation_history_model.dart';
export 'liberation_history_model.dart';
class LiberationHistoryWidget extends StatefulWidget {
const LiberationHistoryWidget({super.key});
@override
State<LiberationHistoryWidget> createState() =>
_LiberationHistoryWidgetState();
}
class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
late LiberationHistoryModel _model;
final scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState() {
super.initState();
_model = createModel(context, () => LiberationHistoryModel());
_model.textController ??= TextEditingController();
_model.textFieldFocusNode ??= FocusNode();
}
@override
void dispose() {
_model.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
context.watch<FFAppState>();
return GestureDetector(
onTap: () => _model.unfocusNode.canRequestFocus
? FocusScope.of(context).requestFocus(_model.unfocusNode)
: FocusScope.of(context).unfocus(),
child: Scaffold(
key: scaffoldKey,
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
body: SafeArea(
top: true,
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
width: double.infinity,
height: 100.0,
decoration: BoxDecoration(
color: FlutterFlowTheme.of(context).secondaryBackground,
),
alignment: const AlignmentDirectional(0.0, -1.0),
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0),
child: TextFormField(
controller: _model.textController,
focusNode: _model.textFieldFocusNode,
autofocus: true,
obscureText: false,
decoration: InputDecoration(
labelText: FFLocalizations.of(context).getText(
'dy0mx15f' /* Label here... */,
),
labelStyle: FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily:
FlutterFlowTheme.of(context).labelMediumFamily,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context).labelMediumFamily),
),
hintStyle: FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily:
FlutterFlowTheme.of(context).labelMediumFamily,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context).labelMediumFamily),
),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).alternate,
width: 2.0,
),
borderRadius: BorderRadius.circular(8.0),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).primary,
width: 2.0,
),
borderRadius: BorderRadius.circular(8.0),
),
errorBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 2.0,
),
borderRadius: BorderRadius.circular(8.0),
),
focusedErrorBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 2.0,
),
borderRadius: BorderRadius.circular(8.0),
),
prefixIcon: const Icon(
Icons.search_sharp,
),
),
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily:
FlutterFlowTheme.of(context).bodyMediumFamily,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context).bodyMediumFamily),
),
validator:
_model.textControllerValidator.asValidator(context),
),
),
),
Expanded(
child: Container(
width: double.infinity,
height: double.infinity,
decoration: const BoxDecoration(),
child: FutureBuilder<ApiCallResponse>(
future: PhpGroup.getVisitsCall.call(
devUUID: FFAppState().devUUID,
userUUID: FFAppState().userUUID,
cliID: FFAppState().cliUUID,
atividade: 'getVisitas',
),
builder: (context, snapshot) {
// Customize what your widget looks like when it's loading.
if (!snapshot.hasData) {
return Center(
child: SizedBox(
width: 50.0,
height: 50.0,
child: SpinKitCircle(
color: FlutterFlowTheme.of(context).primary,
size: 50.0,
),
),
);
}
final wrapGetVisitsResponse = snapshot.data!;
return Builder(
builder: (context) {
final visitaWrap = PhpGroup.getVisitsCall
.visitasList(
wrapGetVisitsResponse.jsonBody,
)
?.toList() ??
[];
return Wrap(
spacing: 2.0,
runSpacing: 1.0,
alignment: WrapAlignment.start,
crossAxisAlignment: WrapCrossAlignment.start,
direction: Axis.horizontal,
runAlignment: WrapAlignment.start,
verticalDirection: VerticalDirection.down,
clipBehavior: Clip.none,
children: List.generate(visitaWrap.length,
(visitaWrapIndex) {
final visitaWrapItem =
visitaWrap[visitaWrapIndex];
return Align(
alignment: const AlignmentDirectional(0.0, 0.0),
child: InkWell(
splashColor: Colors.transparent,
focusColor: Colors.transparent,
hoverColor: Colors.transparent,
highlightColor: Colors.transparent,
onTap: () async {
await showModalBottomSheet(
isScrollControlled: true,
backgroundColor: Colors.transparent,
enableDrag: false,
useSafeArea: true,
context: context,
builder: (context) {
return GestureDetector(
onTap: () => _model
.unfocusNode.canRequestFocus
? FocusScope.of(context)
.requestFocus(
_model.unfocusNode)
: FocusScope.of(context)
.unfocus(),
child: Padding(
padding: MediaQuery.viewInsetsOf(
context),
child:
VisitDetailsModalTemplateComponentWidget(
visitStatusStr: getJsonField(
visitaWrapItem,
r'''$.VAW_STATUS''',
).toString(),
visitStartDateStr: getJsonField(
visitaWrapItem,
r'''$.VAW_DTINICIO''',
).toString(),
visitEndDateStr: getJsonField(
visitaWrapItem,
r'''$.VAW_DTFIM''',
).toString(),
visitReasonStr: getJsonField(
visitaWrapItem,
r'''$.MOT_DESCRICAO''',
).toString(),
visitLevelStr: getJsonField(
visitaWrapItem,
r'''$.NAC_DESCRICAO''',
).toString(),
visitTempStr: getJsonField(
visitaWrapItem,
r'''$.VTE_UNICA''',
).toString(),
visitObsStr: getJsonField(
visitaWrapItem,
r'''$.VAW_OBS''',
).toString(),
visitorImgPath:
valueOrDefault<String>(
'https://freaccess.com.br/freaccess/getImage.php?devUUID=${FFAppState().devUUID}&userUUID=${FFAppState().userUUID}&cliID=${FFAppState().cliUUID}&atividade=getFoto&Documento=${getJsonField(
visitaWrapItem,
r'''$.VTE_DOCUMENTO''',
).toString()}&tipo=E',
'https://storage.googleapis.com/flutterflow-io-6f20.appspot.com/projects/flutter-freaccess-hub-0xgz9q/assets/7ftdetkzc3s0/360_F_64676383_LdbmhiNM6Ypzb3FM4PPuFP9rHe7ri8Ju.jpg',
),
visitorStrList: getJsonField(
visitaWrapItem,
r'''$.VTE_DOCUMENTO''',
).toString(),
visitIdStr: getJsonField(
visitaWrapItem,
r'''$.VAW_ID''',
).toString(),
visitorJsonList: PhpGroup
.getVisitsCall
.visitasList(
wrapGetVisitsResponse.jsonBody,
),
updateToggleIdx: () async {},
repeatVisitSchedule: () async {},
),
),
);
},
).then((value) => safeSetState(() {}));
},
child: Card(
clipBehavior: Clip.antiAliasWithSaveLayer,
color: FlutterFlowTheme.of(context)
.secondaryBackground,
elevation: 5.0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8.0),
),
child: Container(
width: 350.0,
height: 115.0,
decoration: BoxDecoration(
color: FlutterFlowTheme.of(context)
.secondaryBackground,
),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Container(
width: 100.0,
height: 100.0,
decoration: const BoxDecoration(),
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
Row(
mainAxisSize:
MainAxisSize.max,
children: [
Text(
FFLocalizations.of(
context)
.getText(
'f77je6tr' /* Visitante: */,
),
style:
FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
.bodyMediumFamily,
fontSize:
12.5,
letterSpacing:
0.0,
fontWeight:
FontWeight
.bold,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
Align(
alignment:
const AlignmentDirectional(
-1.0, -1.0),
child: Text(
getJsonField(
visitaWrapItem,
r'''$.VTE_NOME''',
).toString(),
style: FlutterFlowTheme
.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
.bodyMediumFamily,
fontSize: 12.5,
letterSpacing:
0.0,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
),
].addToStart(
const SizedBox(width: 10.0)),
),
Row(
mainAxisSize:
MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Text(
FFLocalizations.of(
context)
.getText(
'dkzewokx' /* Início em: */,
),
style:
FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
.bodyMediumFamily,
fontSize:
12.5,
letterSpacing:
0.0,
fontWeight:
FontWeight
.bold,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
Text(
getJsonField(
visitaWrapItem,
r'''$.VAW_DTINICIO''',
).toString(),
style:
FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
.bodyMediumFamily,
fontSize:
12.5,
letterSpacing:
0.0,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
].addToStart(
const SizedBox(width: 10.0)),
),
Row(
mainAxisSize:
MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Text(
FFLocalizations.of(
context)
.getText(
'qi4mjhtw' /* Fim em: */,
),
style:
FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
.bodyMediumFamily,
fontSize:
12.5,
letterSpacing:
0.0,
fontWeight:
FontWeight
.bold,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
Text(
getJsonField(
visitaWrapItem,
r'''$.VAW_DTFIM''',
).toString(),
style:
FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
.bodyMediumFamily,
fontSize:
12.5,
letterSpacing:
0.0,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
].addToStart(
const SizedBox(width: 10.0)),
),
Align(
alignment:
const AlignmentDirectional(
-1.0, 0.0),
child: Padding(
padding:
const EdgeInsetsDirectional
.fromSTEB(
10.0,
0.0,
0.0,
0.0),
child: Container(
width: 200.0,
height: 27.0,
decoration:
BoxDecoration(
color: valueOrDefault<
Color>(
() {
if (functions
.jsonToStr(
getJsonField(
visitaWrapItem,
r'''$.VAW_STATUS''',
)) ==
'\"A\"') {
return FlutterFlowTheme.of(
context)
.success;
} else if (functions
.jsonToStr(
getJsonField(
visitaWrapItem,
r'''$.VAW_STATUS''',
)) ==
'\"C\"') {
return FlutterFlowTheme.of(
context)
.error;
} else if (functions
.jsonToStr(
getJsonField(
visitaWrapItem,
r'''$.VAW_STATUS''',
)) ==
'\"I\"') {
return FlutterFlowTheme.of(
context)
.warning;
} else {
return FlutterFlowTheme.of(
context)
.primary;
}
}(),
FlutterFlowTheme.of(
context)
.primary,
),
borderRadius:
BorderRadius
.circular(
5.0),
),
child: Align(
alignment:
const AlignmentDirectional(
0.0, 0.0),
child: Text(
() {
if (functions
.jsonToStr(
getJsonField(
visitaWrapItem,
r'''$.VAW_STATUS''',
)) ==
'\"A\"') {
return FFLocalizations.of(
context)
.getVariableText(
ptText:
'Ativo',
enText:
'Active',
);
} else if ((functions
.jsonToStr(
getJsonField(
visitaWrapItem,
r'''$.VAW_STATUS''',
)) ==
'\"F\"') ||
(functions.jsonToStr(
getJsonField(
visitaWrapItem,
r'''$.VAW_STATUS''',
)) ==
'\"C\"') ||
(functions.jsonToStr(
getJsonField(
visitaWrapItem,
r'''$.VAW_STATUS''',
)) ==
'\"B\"') ||
(functions.jsonToStr(
getJsonField(
visitaWrapItem,
r'''$.VAW_STATUS''',
)) ==
'\"I\"')) {
return FFLocalizations.of(
context)
.getVariableText(
ptText:
'Cancelado',
enText:
'Canceled',
);
} else {
return FFLocalizations.of(
context)
.getVariableText(
ptText:
'Pendente',
enText:
'Pending',
);
}
}(),
style: FlutterFlowTheme
.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
.bodyMediumFamily,
color: FlutterFlowTheme.of(
context)
.info,
letterSpacing:
0.0,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
),
),
),
),
].divide(const SizedBox(height: 3.0)),
),
),
),
ClipRRect(
borderRadius:
BorderRadius.circular(0.0),
child: CachedNetworkImage(
fadeInDuration:
const Duration(milliseconds: 500),
fadeOutDuration:
const Duration(milliseconds: 500),
imageUrl: valueOrDefault<String>(
'https://freaccess.com.br/freaccess/getImage.php?devUUID=${FFAppState().devUUID}&userUUID=${FFAppState().userUUID}&cliID=${FFAppState().cliUUID}&atividade=getFoto&Documento=${getJsonField(
visitaWrapItem,
r'''$.VTE_DOCUMENTO''',
).toString()}&tipo=E',
'https://storage.googleapis.com/flutterflow-io-6f20.appspot.com/projects/flutter-freaccess-hub-0xgz9q/assets/7ftdetkzc3s0/360_F_64676383_LdbmhiNM6Ypzb3FM4PPuFP9rHe7ri8Ju.jpg',
),
fit: BoxFit.cover,
),
),
],
),
),
),
),
);
}),
);
},
);
},
),
),
),
].addToStart(const SizedBox(height: 30.0)),
),
),
),
);
}
}

View File

@ -2115,6 +2115,7 @@ class _ScheduleCompleteVisitPageWidgetState
), ),
textAlign: TextAlign.start, textAlign: TextAlign.start,
maxLines: null, maxLines: null,
maxLength: 80,
validator: _model validator: _model
.textController3Validator .textController3Validator
.asValidator(context), .asValidator(context),
@ -2671,12 +2672,13 @@ class _ScheduleCompleteVisitPageWidgetState
'\"A\"') { '\"A\"') {
return FlutterFlowTheme.of(context) return FlutterFlowTheme.of(context)
.success; .success;
} else if (functions.jsonToStr( } else if ((visitStatusStr == 'C') ||
getJsonField( (visitStatusStr ==
visitaWrapItem, 'F') ||
r'''$.VAW_STATUS''', (visitStatusStr ==
)) == 'B') ||
'\"C\"') { (visitStatusStr ==
'I')) {
return FlutterFlowTheme.of(context) return FlutterFlowTheme.of(context)
.error; .error;
} else if (functions } else if (functions

View File

@ -824,6 +824,7 @@ class _ScheduleProvisionalVisitPageWidgetState
), ),
textAlign: TextAlign.start, textAlign: TextAlign.start,
maxLines: null, maxLines: null,
maxLength: 100,
validator: _model.textController3Validator validator: _model.textController3Validator
.asValidator(context), .asValidator(context),
), ),