import "package:flutter/material.dart"; import "package:font_awesome_flutter/font_awesome_flutter.dart"; import "package:inventree/api.dart"; import "package:inventree/l10.dart"; import "package:inventree/inventree/company.dart"; import "package:inventree/inventree/model.dart"; import "package:inventree/widget/paginator.dart"; import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/supplier_part_detail.dart"; /* * Widget for displaying a list of Supplier Part instances */ class SupplierPartList extends StatefulWidget { const SupplierPartList(this.filters); final Map filters; @override _SupplierPartListState createState() => _SupplierPartListState(); } class _SupplierPartListState extends RefreshableState { @override String getAppBarTitle() => L10().supplierParts; bool showFilterOptions = false; @override List appBarActions(BuildContext context) => [ IconButton( icon: FaIcon(FontAwesomeIcons.filter), onPressed: () async { setState(() { showFilterOptions = !showFilterOptions; }); }, ) ]; @override Widget getBody(BuildContext context) { return PaginatedSupplierPartList(widget.filters, showFilterOptions); } } class PaginatedSupplierPartList extends PaginatedSearchWidget { const PaginatedSupplierPartList(Map filters, bool showSearch) : super(filters: filters, showSearch: showSearch); @override _PaginatedSupplierPartListState createState() => _PaginatedSupplierPartListState(); } class _PaginatedSupplierPartListState extends PaginatedSearchState { _PaginatedSupplierPartListState() : super(); @override String get prefix => "supplierpart_"; @override Map get orderingOptions => {}; @override Map> get filterOptions => {}; @override Future requestPage(int limit, int offset, Map params) async { final page = await InvenTreeSupplierPart().listPaginated(limit, offset, filters: params); return page; } @override Widget buildItem(BuildContext context, InvenTreeModel model) { InvenTreeSupplierPart supplierPart = model as InvenTreeSupplierPart; return ListTile( title: Text(supplierPart.SKU), subtitle: Text(supplierPart.partName), leading: InvenTreeAPI().getThumbnail(supplierPart.supplierImage), trailing: InvenTreeAPI().getThumbnail(supplierPart.partImage), onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => SupplierPartDetailWidget(supplierPart) ) ); }, ); } }