part of 'index.dart'; class DocumentPageModel extends FlutterFlowModel { @override void dispose() {} @override void initState(BuildContext context) {} final SearchKey searchKey = SearchKey(); final DocumentKey docKey = DocumentKey(); final PagingController _pagingController = PagingController(firstPageKey: 1); int count = 0; final dynamic page = 1; Query query = Document.fromDesc(''); late Document currentDocument; bool isCategorySelected = false; late Category currentCategory; List documents = []; List categories = []; /// [listBodyBuilder] Widget listBodyBuilder(BuildContext context, Document item, int index) { return DocumentItem(document: item); } /// [listHeaderBuilder] Widget listHeaderBuilder(BuildContext context) => Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.fromLTRB(15, 0, 50, 0), child: Text( 'Últimos Documentos', style: TextStyle( color: FlutterFlowTheme.of(context).primaryText, fontSize: LimitedFontSizeUtil.getHeaderFontSize(context), ), ), ), CategoryCarousel( categories: categories, filter: filterByCategory, ), ], ); /// [generateDocuments] Future<(bool, List)> generateDocuments( pageKey, Query query) async { final List error = [null]; print('Query: ${query is Document}'); final GetDocuments getDocuments = FreAccessWSGlobal.getDocuments; final ApiCallResponse newItems = await getDocuments.call(pageKey, query); if (newItems.jsonBody == null) return (false, error); if (newItems.jsonBody['error'] == true) return (false, error); final List list = newItems.jsonBody['value']['list']; late final List docs = []; for (var item in list) { log('-> generateDocuments: $item'); final String description = item['description']; final String type = item['type']; final String category = item['category']['description']; final String color = item['category']['color']; final String person = item['person'] ?? ''; final String property = item['property'] ?? ''; final String createdAt = item['createdAt']; final String updatedAt = item['updatedAt']; final int categoryId = item['category']['id']; final int documentId = item['id']; final doc = Document( id: documentId, description: description, type: type, category: Category( id: categoryId, color: color.toColor(), title: category, ), person: person, property: property, createdAt: createdAt, updatedAt: updatedAt, ); docs.add(doc); } return (true, docs); // listViewKey.currentState!.count = newItems.jsonBody['value']['count'] ?? 0; } /// [generateCategories] Future> generateCategories(List documents) async { final List error = [null]; if (documents == []) return error; final GetCategories getCategories = FreAccessWSGlobal.getCategories; final ApiCallResponse newItems = await getCategories.call(); if (newItems.jsonBody['error'] == true) return error; if (newItems.jsonBody == null) return error; final list = newItems.jsonBody['value'] as List; late final List cats = []; for (var item in list) { final String color = item['color']; final String title = item['description']; final int id = item['id']; final cat = Category( id: id, color: color.toColor(), title: title, ); cats.add(cat); } log('cats: $cats'); return cats; } void filterByCategory(Category query) { final state = searchKey.currentState; if (state != null) { log('filterByCategories: '); state.safeSetState(() { if (isCategorySelected) { state.filter(null); isCategorySelected = false; } else { state.filter(query); isCategorySelected = true; } }); } } void onFetchError(Object e, StackTrace s) { DialogUtil.errorDefault(docKey.currentContext!); LogUtil.requestAPIFailed( "proccessRequest.php", "", "Consulta de Veículo", e, s); } }