fix: Selector de dados (Motivo e Nivel)

This commit is contained in:
Ivan Antunes 2024-08-13 16:57:02 -03:00
parent 5a67d5d3f9
commit 91d219e157
2 changed files with 52 additions and 87 deletions

View File

@ -19,9 +19,7 @@ Widget buildDetails(
BuildContext context, BuildContext context,
Future<dynamic> Function(BuildContext, int, int, String, String)? Future<dynamic> Function(BuildContext, int, int, String, String)?
changeStatusAction) { changeStatusAction) {
log('test');
log('visitaWrapItem: ${visitaWrapItem.toString()}');
log('test');
return VisitRequestTemplateComponentWidget( return VisitRequestTemplateComponentWidget(
buttons: [ buttons: [
if (getStatus(visitaWrapItem['VAW_STATUS']) == if (getStatus(visitaWrapItem['VAW_STATUS']) ==
@ -116,11 +114,12 @@ Widget buildDetails(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => ScheduleCompleteVisitPageWidget( builder: (context) => ScheduleCompleteVisitPageWidget(
dropdownValue1: visitaWrapItem['MOT_DESCRICAO'], dropdownValue1: visitaWrapItem['MOT_DESCRICAO'],
dropdownValue2: visitaWrapItem['NAC_DESCRICAO'], dropdownValue2: visitaWrapItem['NAC_DESCRICAO'],
visitorJsonList: [visitaWrapItem], visitorJsonList: [visitaWrapItem],
visitorStrList: visitaWrapItem['VTE_DOCUMENTO'], visitorStrList: visitaWrapItem['VTE_DOCUMENTO'],
)), )
),
); );
}, },
options: FFButtonOptions( options: FFButtonOptions(
@ -142,8 +141,8 @@ Widget buildDetails(
status.active) // SHARE ACTION status.active) // SHARE ACTION
FFButtonWidget( FFButtonWidget(
text: FFLocalizations.of(context).getVariableText( text: FFLocalizations.of(context).getVariableText(
ptText: 'Reagendar', ptText: 'Compartilhar',
enText: 'Reschedule', enText: 'Share',
), ),
icon: const Icon(Icons.share), icon: const Icon(Icons.share),
onPressed: () async { onPressed: () async {

View File

@ -64,10 +64,7 @@ class _ScheduleCompleteVisitPageWidgetState
// On page load action. // On page load action.
SchedulerBinding.instance.addPostFrameCallback((_) async { SchedulerBinding.instance.addPostFrameCallback((_) async {
if ((widget.visitorStrList != null && widget.visitorStrList != '') && if ((widget.visitorStrList != null && widget.visitorStrList != '') && ((widget.visitorJsonList != null && (widget.visitorJsonList)!.isNotEmpty) != null)) {
((widget.visitorJsonList != null &&
(widget.visitorJsonList)!.isNotEmpty) !=
null)) {
_model.visitorJsonList = widget.visitorJsonList! _model.visitorJsonList = widget.visitorJsonList!
.where((e) => .where((e) =>
widget.visitorStrList == widget.visitorStrList ==
@ -85,12 +82,9 @@ class _ScheduleCompleteVisitPageWidgetState
return; return;
} }
if ((widget.dropdownValue1 != null && widget.dropdownValue1 != '') && if ((widget.dropdownValue1 != null && widget.dropdownValue1 != '') && (widget.dropdownValue2 != null && widget.dropdownValue2 != '')) {
(widget.dropdownValue2 != null && widget.dropdownValue2 != '')) {
_model.dropDownValue1 = widget.dropdownValue1!; _model.dropDownValue1 = widget.dropdownValue1!;
log('_model.dropdownValue1: ${_model.dropDownValue1 ?? ''}');
_model.dropDownValue2 = widget.dropdownValue2!; _model.dropDownValue2 = widget.dropdownValue2!;
log('_model.dropdownValue2: ${_model.dropDownValue2 ?? ''}');
safeSetState(() {}); safeSetState(() {});
} else { } else {
return; return;
@ -135,7 +129,7 @@ class _ScheduleCompleteVisitPageWidgetState
} }
} }
void_scrollListener() { void _scrollListener() {
if (_visitHistoryController.position.pixels == if (_visitHistoryController.position.pixels ==
_visitHistoryController.position.maxScrollExtent) { _visitHistoryController.position.maxScrollExtent) {
_loadMoreVisitHistory(); _loadMoreVisitHistory();
@ -1103,55 +1097,30 @@ Widget scheduleVisit(BuildContext context,
), ),
); );
} }
final dropDownGetDadosResponse =
snapshot.data!; final dropDownGetDadosResponse = snapshot.data!;
final reasonsJsonList = final reasonsJsonList = PhpGroup.getDadosCall.reasonsJsonList(dropDownGetDadosResponse.jsonBody);
PhpGroup.getDadosCall.reasonsJsonList(
dropDownGetDadosResponse.jsonBody, if (_model.dropDownValue1 != '' && _model.dropDownValue1 != null) {
); String value = _model.dropDownValue1.toString() ?? '';
// Algoritmo de match // PODE MANDAR DE VASCO
if (_model.dropDownValue1 != null && if (value.contains('{') && value.contains('}') && value.contains(':')) {
_model.dropDownValue1!.isNotEmpty) { // log("Valor e um Objeto | Usuário Escolheu o Motivo ${_model.dropDownValue1}");
final matchedValue = } else {
reasonsJsonList?.firstWhere( // log("Valor e uma String | Usuário Escolheu o Motivo ${_model.dropDownValue1}");
(element) => if (reasonsJsonList != null && reasonsJsonList.isNotEmpty) {
element.toString() == var item = reasonsJsonList.where((reason) => reason['MOT_DESCRICAO'].toString().contains(_model.dropDownValue1 ?? ''));
_model.dropDownValue1, _model.dropDownValue1 = item.firstOrNull.toString() ?? '';
orElse: () => null, }
);
if (matchedValue != null) {
WidgetsBinding.instance
.addPostFrameCallback((_) {
_model.dropDownValueController1
?.value = matchedValue.toString();
});
} }
} }
return FlutterFlowDropDown<String>( return FlutterFlowDropDown<String>(
fillColor: FlutterFlowTheme.of(context) fillColor: FlutterFlowTheme.of(context).primaryBackground,
.primaryBackground, controller: _model.dropDownValueController1 ??= FormFieldController<String>(_model.dropDownValue1 ??= ''),
controller: options: reasonsJsonList != null && reasonsJsonList != [] ? reasonsJsonList.map((e) => e.toString()).toList() : [],
_model.dropDownValueController1 ??= optionLabels: PhpGroup.getDadosCall.reasonsMotDescStrList(dropDownGetDadosResponse.jsonBody),
FormFieldController<String>( onChanged: (val) => safeSetState(() => _model.dropDownValue1 = val),
_model.dropDownValue1 ?? ''),
options: reasonsJsonList != null &&
reasonsJsonList != []
? List<String>.from(
PhpGroup.getDadosCall
.reasonsJsonList(
dropDownGetDadosResponse
.jsonBody,
)!
.map((e) => e.toString())
.toList())
: [],
optionLabels: PhpGroup.getDadosCall
.reasonsMotDescStrList(
dropDownGetDadosResponse.jsonBody,
),
onChanged: (val) => safeSetState(
() => _model.dropDownValue1 = val),
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
textStyle: FlutterFlowTheme.of(context) textStyle: FlutterFlowTheme.of(context)
@ -1253,30 +1222,29 @@ Widget scheduleVisit(BuildContext context,
), ),
); );
} }
final dropDownGetDadosResponse =
snapshot.data!; final dropDownGetDadosResponse = snapshot.data!;
final lavelList = final lavelList = PhpGroup.getDadosCall.levelJsonList(dropDownGetDadosResponse.jsonBody);
PhpGroup.getDadosCall.levelJsonList(
dropDownGetDadosResponse.jsonBody, if (_model.dropDownValue2 != '' && _model.dropDownValue2 != null) {
); String value = _model.dropDownValue2.toString() ?? '';
if (value.contains('{') && value.contains('}') && value.contains(':')) {
// log("Valor e um Objeto | Usuário Escolheu o Nivel ${_model.dropDownValue2}");
} else {
// log("Valor e uma String | Usuário Escolheu o Nivel ${_model.dropDownValue2}");
if (lavelList != null && lavelList.isNotEmpty) {
var item = lavelList.where((level) => level['NAC_DESCRICAO'].toString().contains(_model.dropDownValue2 ?? ''));
_model.dropDownValue2 = item.firstOrNull.toString() ?? '';
}
}
}
return FlutterFlowDropDown<String>( return FlutterFlowDropDown<String>(
controller: controller: _model.dropDownValueController2 ??= FormFieldController<String>(_model.dropDownValue2 ??= ''),
_model.dropDownValueController2 ??= options: lavelList != null && lavelList != [] ? lavelList.map((e) => e.toString()).toList() : [],
FormFieldController<String>( optionLabels: PhpGroup.getDadosCall.levelNACDescricaoStrList(dropDownGetDadosResponse.jsonBody),
_model.dropDownValue2 ??= '', onChanged: (val) => safeSetState(() => _model.dropDownValue2 = val),
),
options:
lavelList != null && lavelList != []
? List<String>.from(lavelList!
.map((e) => e.toString())
.toList())
: [],
optionLabels: PhpGroup.getDadosCall
.levelNACDescricaoStrList(
dropDownGetDadosResponse.jsonBody,
),
onChanged: (val) => safeSetState(
() => _model.dropDownValue2 = val),
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
textStyle: FlutterFlowTheme.of(context) textStyle: FlutterFlowTheme.of(context)
@ -1323,7 +1291,7 @@ Widget scheduleVisit(BuildContext context,
), ),
], ],
), ),
if (_model.dropDownValue1 == '') if (_model.dropDownValue2 == '')
Row( Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@ -1584,7 +1552,6 @@ Widget scheduleVisit(BuildContext context,
), ),
onPressed: _model.isValid() onPressed: _model.isValid()
? () async { ? () async {
log(_model.dropDownValue1.toString());
await showDialog( await showDialog(
context: context, context: context,
@ -1607,7 +1574,6 @@ Widget scheduleVisit(BuildContext context,
), ),
icon: const Icon(Icons.done), icon: const Icon(Icons.done),
onPressed: () async { onPressed: () async {
log('visitorStrList ${_model.visitorStrList}');
showAlertDialog( showAlertDialog(
context, context,
FFLocalizations.of(context) FFLocalizations.of(context)