feat: Update image URL for liberation history item

This commit is contained in:
Jonatas Antunes Messias 2024-07-01 17:20:28 -03:00
parent 2eb0f768f5
commit 6b6bb28c8b
5 changed files with 544 additions and 619 deletions

File diff suppressed because one or more lines are too long

View File

@ -1854,15 +1854,18 @@ class GetAccessCall {
}
class GetLiberationsCall {
Future<ApiCallResponse> call({
Stream<ApiCallResponse> call({
String? devUUID = '',
String? userUUID = '',
String? cliID = '',
String? atividade = '',
}) async {
}) {
final baseUrl = PhpGroup.getBaseUrl();
final StreamController<ApiCallResponse> controller = StreamController();
return ApiManager.instance.makeApiCall(
Future.microtask(() async {
try {
final response = await ApiManager.instance.makeApiCall(
callName: 'getLiberations',
apiUrl: '$baseUrl/processRequest.php',
callType: ApiCallType.POST,
@ -1883,6 +1886,15 @@ class GetLiberationsCall {
isStreamingApi: false,
alwaysAllowBody: false,
);
controller.add(response);
await controller.close();
} catch (e) {
controller.addError(e);
await controller.close();
}
});
return controller.stream;
}
bool? error(dynamic response) => castToType<bool>(getJsonField(

View File

@ -422,8 +422,8 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
'en': 'Search here',
},
'dkzewokx': {
'pt': 'Date:',
'en': 'Shipping:',
'pt': 'Data:',
'en': 'Date:',
},
'2s9avwbq': {
'pt': 'Motivo:',
@ -488,6 +488,10 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
'pt': 'Tipo de Pessoa',
'en': 'Type of Person',
},
'zok7lu4w': {
'pt': 'Visitante',
'en': 'Visitor',
},
'oonqk812': {
'pt': 'Morador',
'en': 'Resident',

View File

@ -16,11 +16,11 @@ class LiberationHistoryModel extends FlutterFlowModel<LiberationHistoryWidget> {
/// Query cache managers for this widget.
final _getLiberationsManager = FutureRequestManager<ApiCallResponse>();
Future<ApiCallResponse> getLiberations({
final _getLiberationsManager = StreamRequestManager<ApiCallResponse>();
Stream<ApiCallResponse> getLiberations({
String? uniqueQueryKey,
bool? overrideCache,
required Future<ApiCallResponse> Function() requestFn,
required Stream<ApiCallResponse> Function() requestFn,
}) =>
_getLiberationsManager.performRequest(
uniqueQueryKey: uniqueQueryKey,

View File

@ -1,3 +1,5 @@
import 'package:f_r_e_hub/components/templates_components/visit_request_template_component/visit_request_template_component_widget.dart';
import '/backend/api_requests/api_calls.dart';
import '/flutter_flow/flutter_flow_icon_button.dart';
import '/flutter_flow/flutter_flow_theme.dart';
@ -43,7 +45,6 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
@override
Widget build(BuildContext context) {
context.watch<FFAppState>();
return GestureDetector(
onTap: () => _model.unfocusNode.canRequestFocus
? FocusScope.of(context).requestFocus(_model.unfocusNode)
@ -51,7 +52,15 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
child: Scaffold(
key: scaffoldKey,
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
appBar: AppBar(
appBar: appBarLiberationHistoryPage(context),
body: bodyLiberationHistoryPage(context, _model),
),
);
}
}
PreferredSizeWidget appBarLiberationHistoryPage(BuildContext context) {
return AppBar(
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
automaticallyImplyLeading: false,
leading: FlutterFlowIconButton(
@ -82,79 +91,84 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
),
actions: const [],
centerTitle: true,
),
body: SafeArea(
);
}
Widget bodyLiberationHistoryPage(
BuildContext context, LiberationHistoryModel _model) {
return SafeArea(
top: true,
child: Column(
child: Stack(
children: [
liberationDynamicListViw(context, _model),
searchBarContainer(context, _model),
].addToStart(const SizedBox(height: 0)),
),
);
}
Widget searchBarContainer(BuildContext context, LiberationHistoryModel _model) {
return 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),
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsetsDirectional.fromSTEB(8.0, 8.0, 8.0, 8.0),
child: SizedBox(
width: 300.0,
height: 40.0,
child: TextFormField(
controller: _model.textController,
focusNode: _model.textFieldFocusNode,
autofocus: true,
autofocus: false,
obscureText: false,
decoration: InputDecoration(
isDense: true,
labelText: FFLocalizations.of(context).getText(
'dy0mx15f' /* Pesquise aqui */,
),
labelStyle: FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily: FlutterFlowTheme.of(context)
.labelMediumFamily,
labelStyle: 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),
FlutterFlowTheme.of(context).labelMediumFamily),
),
hintStyle: FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily: FlutterFlowTheme.of(context)
.labelMediumFamily,
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),
FlutterFlowTheme.of(context).labelMediumFamily),
),
enabledBorder: UnderlineInputBorder(
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).alternate,
width: 2.0,
),
borderRadius: BorderRadius.circular(8.0),
),
focusedBorder: UnderlineInputBorder(
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).primary,
width: 2.0,
),
borderRadius: BorderRadius.circular(8.0),
),
errorBorder: UnderlineInputBorder(
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 2.0,
),
borderRadius: BorderRadius.circular(8.0),
),
focusedErrorBorder: UnderlineInputBorder(
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 2.0,
@ -169,25 +183,30 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
),
),
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily:
FlutterFlowTheme.of(context).bodyMediumFamily,
fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context).bodyMediumFamily),
),
validator:
_model.textControllerValidator.asValidator(context),
validator: _model.textControllerValidator.asValidator(context),
),
),
),
],
),
Expanded(
].addToStart(const SizedBox(height: 0)),
);
}
Widget liberationDynamicListViw(
BuildContext context, LiberationHistoryModel _model) {
return Expanded(
child: Container(
width: double.infinity,
height: double.infinity,
decoration: const BoxDecoration(),
child: FutureBuilder<ApiCallResponse>(
future: _model.getLiberations(
child: StreamBuilder<ApiCallResponse>(
stream: _model.getLiberations(
requestFn: () => PhpGroup.getLiberationsCall.call(
devUUID: FFAppState().devUUID,
userUUID: FFAppState().userUUID,
@ -196,7 +215,6 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
),
),
builder: (context, snapshot) {
// Customize what your widget looks like when it's loading.
if (!snapshot.hasData) {
return Center(
child: SizedBox(
@ -210,28 +228,74 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
);
}
final columnGetLiberationsResponse = snapshot.data!;
return Builder(
builder: (context) {
final liberationHistory = PhpGroup.getLiberationsCall
.rqList(
columnGetLiberationsResponse.jsonBody,
)
?.toList() ??
[];
return SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.max,
children: List.generate(liberationHistory.length,
(liberationHistoryIndex) {
final liberationHistoryItem =
liberationHistory[liberationHistoryIndex];
return Align(
alignment:
const AlignmentDirectional(0.0, 0.0),
final filteredLiberationHistory =
_model.textController.text.isNotEmpty
? liberationHistory
.where((item) => functions
.jsonToStr(getJsonField(
item,
r'''$.VTE_NOME''',
))
.toLowerCase()
.contains(
_model.textController.text.toLowerCase(),
))
.toList()
: liberationHistory;
return ListView.builder(
itemCount: filteredLiberationHistory.length,
addAutomaticKeepAlives: false,
addRepaintBoundaries: true,
cacheExtent: 1000.0,
itemBuilder: (BuildContext context, int index) {
final liberationHistoryItem = filteredLiberationHistory[index];
return Padding(
padding: EdgeInsets.only(
top: index == 0 ? 60.0 : 8.0,
left: 8.0,
right: 8.0,
bottom: 8.0,
),
child: Align(
alignment: AlignmentDirectional(0.0, 0.0),
child: liberationHistoryItemCard(
context,
liberationHistoryItem,
),
),
);
},
);
},
),
),
);
}
Widget liberationHistoryItemCard(
BuildContext context, dynamic liberationHistoryItem) {
return InkWell(
onTap: () {
showModalBottomSheet(
isScrollControlled: true,
backgroundColor: Colors.transparent,
useSafeArea: true,
context: context,
builder: (context) {
return const VisitRequestTemplateComponentWidget();
},
);
},
child: Card(
clipBehavior: Clip.antiAliasWithSaveLayer,
color: FlutterFlowTheme.of(context)
.secondaryBackground,
color: FlutterFlowTheme.of(context).secondaryBackground,
elevation: 5.0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8.0),
@ -240,32 +304,26 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
width: 350.0,
height: 115.0,
decoration: BoxDecoration(
color: FlutterFlowTheme.of(context)
.secondaryBackground,
color: FlutterFlowTheme.of(context).secondaryBackground,
),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(0.0, 0.0, 10.0, 0.0),
padding:
const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 10.0, 0.0),
child: ClipRRect(
borderRadius:
BorderRadius.circular(100.0),
borderRadius: BorderRadius.circular(100.0),
child: CachedNetworkImage(
fadeInDuration: const Duration(
milliseconds: 500),
fadeOutDuration: const Duration(
milliseconds: 500),
imageUrl:
valueOrDefault<String>(
'https://freaccess.com.br/freaccess/getImage.php?&cliID=${FFAppState().cliUUID}&atividade=getFoto&Documento=${getJsonField(
fadeInDuration: const Duration(milliseconds: 500),
fadeOutDuration: const Duration(milliseconds: 500),
imageUrl: valueOrDefault<String>(
"https://freaccess.com.br/freaccess/getImage.php?&cliID=${FFAppState().cliUUID}&atividade=getFoto&Documento=${getJsonField(
liberationHistoryItem,
r'''$.VTE_ID''',
).toString()}&tipo=E',
'https://storage.googleapis.com/flutterflow-io-6f20.appspot.com/projects/flutter-freaccess-hub-0xgz9q/assets/7ftdetkzc3s0/360_F_64676383_LdbmhiNM6Ypzb3FM4PPuFP9rHe7ri8Ju.jpg',
).toString()}&tipo=E",
"https://storage.googleapis.com/flutterflow-io-6f20.appspot.com/projects/flutter-freaccess-hub-0xgz9q/assets/7ftdetkzc3s0/360_F_64676383_LdbmhiNM6Ypzb3FM4PPuFP9rHe7ri8Ju.jpg",
),
width: 80.0,
fit: BoxFit.cover,
@ -281,91 +339,61 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
mainAxisSize: MainAxisSize.max,
children: [
Row(
mainAxisSize:
MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment
.center,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Align(
alignment:
const AlignmentDirectional(
-1.0, -1.0),
alignment: const AlignmentDirectional(-1.0, -1.0),
child: Text(
getJsonField(
liberationHistoryItem,
r'''$.VTE_NOME''',
).toString(),
style: FlutterFlowTheme
.of(context)
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
fontSize: 12.5,
letterSpacing:
0.0,
fontWeight:
FontWeight
.bold,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
FlutterFlowTheme.of(context)
letterSpacing: 0.0,
fontWeight: FontWeight.bold,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
),
]
.addToStart(
const SizedBox(
width: 10.0))
.addToEnd(
const SizedBox(
width: 10.0)),
.addToStart(const SizedBox(width: 10.0))
.addToEnd(const SizedBox(width: 10.0)),
),
Row(
mainAxisSize:
MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
FFLocalizations.of(
context)
.getText(
FFLocalizations.of(context).getText(
'dkzewokx' /* Date: */,
),
style:
FlutterFlowTheme.of(
context)
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
fontSize:
12.5,
letterSpacing:
0.0,
fontWeight:
FontWeight
.bold,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
fontSize: 12.5,
letterSpacing: 0.0,
fontWeight: FontWeight.bold,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
Text(
(functions.jsonToStr(
getJsonField(
(functions.jsonToStr(getJsonField(
liberationHistoryItem,
r'''$.NOT_STATUS''',
)) ==
'\"L\"'
'"L"'
? getJsonField(
liberationHistoryItem,
r'''$.NOT_DTRESPOSTA''',
@ -375,62 +403,39 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
r'''$.NOT_DTENVIO''',
))
.toString(),
style:
FlutterFlowTheme.of(
context)
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
fontSize:
12.5,
letterSpacing:
0.0,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
fontSize: 12.5,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
]
.divide(const SizedBox(
width: 10.0))
.addToStart(
const SizedBox(
width: 10.0)),
.divide(const SizedBox(width: 10.0))
.addToStart(const SizedBox(width: 10.0)),
),
Row(
mainAxisSize:
MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
FFLocalizations.of(
context)
.getText(
FFLocalizations.of(context).getText(
'2s9avwbq' /* Motivo: */,
),
style:
FlutterFlowTheme.of(
context)
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
fontSize:
12.5,
letterSpacing:
0.0,
fontWeight:
FontWeight
.bold,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
fontSize: 12.5,
letterSpacing: 0.0,
fontWeight: FontWeight.bold,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
@ -440,175 +445,95 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
liberationHistoryItem,
r'''$.NOT_MOTIVO''',
).toString(),
style:
FlutterFlowTheme.of(
context)
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
fontSize:
12.5,
letterSpacing:
0.0,
useGoogleFonts: GoogleFonts
.asMap()
.containsKey(
fontSize: 12.5,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap().containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
]
.divide(const SizedBox(
width: 10.0))
.addToStart(
const SizedBox(
width: 10.0)),
.divide(const SizedBox(width: 10.0))
.addToStart(const SizedBox(width: 10.0)),
),
Align(
alignment:
const AlignmentDirectional(
-1.0, 0.0),
alignment: const AlignmentDirectional(-1.0, 0.0),
child: Padding(
padding:
const EdgeInsetsDirectional
.fromSTEB(10.0,
0.0, 0.0, 0.0),
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>(
decoration: BoxDecoration(
color: valueOrDefault<Color>(
() {
if (functions
.jsonToStr(
getJsonField(
liberationHistoryItem,
r'''$.VAW_STATUS''',
)) ==
'\"L\"') {
return FlutterFlowTheme.of(
context)
.success;
} else if (functions
.jsonToStr(
getJsonField(
liberationHistoryItem,
r'''$.VAW_STATUS''',
)) ==
'\"B\"') {
return FlutterFlowTheme.of(
context)
.error;
} else if (functions
.jsonToStr(
getJsonField(
liberationHistoryItem,
r'''$.VAW_STATUS''',
)) ==
'\"S\"') {
return FlutterFlowTheme.of(
context)
.warning;
if (liberationHistoryItem["NOT_STATUS"] ==
'L') {
return FlutterFlowTheme.of(context).success;
} else if (liberationHistoryItem[
"NOT_STATUS"] ==
'B') {
return FlutterFlowTheme.of(context).error;
} else if (liberationHistoryItem[
"NOT_STATUS"] ==
'S') {
return FlutterFlowTheme.of(context).warning;
} else {
return FlutterFlowTheme.of(
context)
.primary;
return FlutterFlowTheme.of(context).primary;
}
}(),
FlutterFlowTheme.of(
context)
.primary,
FlutterFlowTheme.of(context).primary,
),
borderRadius:
BorderRadius
.circular(
5.0),
borderRadius: BorderRadius.circular(5.0),
),
child: Align(
alignment:
const AlignmentDirectional(
0.0, 0.0),
alignment: const AlignmentDirectional(0.0, 0.0),
child: Text(
'${FFLocalizations.of(context).getVariableText(
ptText:
'Liberação',
enText:
'Liberation',
)}${() {
if (functions
.jsonToStr(
getJsonField(
liberationHistoryItem,
r'''$.NOT_STATUS''',
)) ==
'\"L\"') {
return FFLocalizations.of(
context)
"${() {
if (liberationHistoryItem["NOT_STATUS"] ==
'L') {
return FFLocalizations.of(context)
.getVariableText(
ptText:
'Ativa',
enText:
'Active',
ptText: 'Ativa',
enText: 'Active',
);
} else if (functions
.jsonToStr(
getJsonField(
liberationHistoryItem,
r'''$.NOT_STATUS''',
)) ==
'\"B\"') {
return FFLocalizations.of(
context)
} else if (liberationHistoryItem[
"NOT_STATUS"] ==
'B') {
return FFLocalizations.of(context)
.getVariableText(
ptText:
'Bloqueada',
enText:
'Blocked',
ptText: 'Bloqueada',
enText: 'Blocked',
);
} else if (functions
.jsonToStr(
getJsonField(
liberationHistoryItem,
r'''$.NOT_STATUS''',
)) ==
'\"S\"') {
return FFLocalizations.of(
context)
} else if (liberationHistoryItem[
"NOT_STATUS"] ==
'S') {
return FFLocalizations.of(context)
.getVariableText(
ptText:
'Pendente',
enText:
'Warning',
ptText: 'Pendente',
enText: 'Pending',
);
} else {
return FFLocalizations.of(
context)
return FFLocalizations.of(context)
.getVariableText(
ptText:
'Desconhecida',
enText:
'Unknow',
ptText: 'Desconhecida',
enText: 'Unknow',
);
}
}()}',
style: FlutterFlowTheme
.of(context)
}()}",
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: FlutterFlowTheme.of(
context)
fontFamily: FlutterFlowTheme.of(context)
.bodyMediumFamily,
color: FlutterFlowTheme.of(
context)
.info,
letterSpacing:
0.0,
useGoogleFonts: GoogleFonts
.asMap()
color: FlutterFlowTheme.of(context).info,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.bodyMediumFamily),
@ -618,8 +543,7 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
),
),
),
].divide(const SizedBox(
height: 3.0)),
].divide(const SizedBox(height: 3.0)),
),
),
),
@ -628,19 +552,4 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
),
),
);
}),
),
);
},
);
},
),
),
),
].addToStart(const SizedBox(height: 30.0)),
),
),
),
);
}
}