184 lines
5.3 KiB
Dart
184 lines
5.3 KiB
Dart
part of 'index.dart';
|
|
|
|
class DocumentPageModel extends FlutterFlowModel<DocumentPage> {
|
|
DocumentPageModel();
|
|
|
|
late final GlobalKey<State<FutureBuilder>> pageKey;
|
|
late final SearchKey managerKey;
|
|
late final DocumentKey viewerKey;
|
|
late final PagingController<int, Document> _pagingController;
|
|
|
|
/// ------------
|
|
|
|
@override
|
|
void initState(BuildContext context) {
|
|
pageKey = GlobalKey<State<FutureBuilder>>();
|
|
managerKey = SearchKey();
|
|
viewerKey = DocumentKey();
|
|
|
|
_pagingController = PagingController<int, Document>(firstPageKey: 1);
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_pagingController.dispose();
|
|
// isCategorySelected = false;
|
|
// isDocumentSelected = false;
|
|
}
|
|
|
|
/// ------------
|
|
|
|
/// [onView]
|
|
void onView(Document document, BuildContext context) async {
|
|
context.read<DocumentPageBloc>().add(SelectDocumentEvent(document));
|
|
}
|
|
|
|
/// [documentItemBuilder]
|
|
DocumentItem documentItemBuilder<T extends Document>(
|
|
BuildContext context, T item, int index) {
|
|
return DocumentItem(
|
|
document: item,
|
|
onPressed: onView,
|
|
);
|
|
}
|
|
|
|
CategoryItem categoryItemBuilder<T>(T? item) {
|
|
return CategoryItem(category: item! as Category);
|
|
}
|
|
|
|
/// [listHeaderBuilder]
|
|
Widget listHeaderBuilder<T>(Future<List<T?>> Function() gen) =>
|
|
Builder(builder: (context) {
|
|
return Column(
|
|
mainAxisSize: MainAxisSize.max,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
children: [
|
|
Padding(
|
|
padding: const EdgeInsets.fromLTRB(15, 0, 50, 0),
|
|
child: Text(
|
|
FFLocalizations.of(context).getVariableText(
|
|
enText: 'Recent Documents', ptText: 'Últimos Documentos'),
|
|
style: TextStyle(
|
|
color: FlutterFlowTheme.of(context).primaryText,
|
|
fontSize: LimitedFontSizeUtil.getHeaderFontSize(context),
|
|
),
|
|
),
|
|
),
|
|
EnhancedCarouselView<T>(
|
|
generateItems: gen,
|
|
itemBuilder: categoryItemBuilder,
|
|
filter: filter<T>,
|
|
),
|
|
],
|
|
);
|
|
});
|
|
|
|
/// [generateDocuments]
|
|
Future<(bool, List<Document?>?)> generateDocuments(
|
|
pageKey, Query query) async {
|
|
final List<Document?> 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<dynamic> list = newItems.jsonBody['value']['list'];
|
|
|
|
late final List<Document> 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<List<Category?>> generateCategories() async {
|
|
final List<Category?> error = [null];
|
|
|
|
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<dynamic>;
|
|
late final List<Category> 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;
|
|
}
|
|
|
|
/// [filter]
|
|
void filter<T>(T query, BuildContext context) {
|
|
context
|
|
.read<DocumentPageBloc>()
|
|
.add(FilterCategoryEvent(query as Archive?));
|
|
}
|
|
// {
|
|
// log('filterByCategories: ');
|
|
// final state = managerKey.currentState;
|
|
|
|
// if (state != null) {
|
|
// // safeSetState(() {
|
|
// // if (isCategorySelected) {
|
|
// // filter(null);
|
|
// // isCategorySelected = false;
|
|
// // } else {
|
|
// // filter(query);
|
|
// // isCategorySelected = true;
|
|
// // }
|
|
// // });
|
|
// }
|
|
// }
|
|
|
|
/// [onFetchError]
|
|
void onFetchError(Object e, StackTrace s) {
|
|
DialogUtil.errorDefault(viewerKey.currentContext!);
|
|
LogUtil.requestAPIFailed(
|
|
"proccessRequest.php", "", "Consulta de Veículo", e, s);
|
|
}
|
|
}
|