feat: order search

This commit is contained in:
efrilm
2025-08-07 12:34:57 +07:00
parent fe92082ceb
commit ab2a59930c
5 changed files with 152 additions and 93 deletions
+21 -19
View File
@@ -45,18 +45,6 @@ class _SalesPageState extends State<SalesPage> {
super.initState();
}
List<Order> _filterOrders(List<Order> orders) {
if (searchQuery.isEmpty) {
return orders;
}
return orders.where((order) {
final customerName = order.orderNumber?.toLowerCase() ?? "";
final queryLower = searchQuery.toLowerCase();
return customerName.contains(queryLower);
}).toList();
}
@override
Widget build(BuildContext context) {
return SafeArea(
@@ -71,8 +59,13 @@ class _SalesPageState extends State<SalesPage> {
if (notification is ScrollEndNotification &&
scrollController.position.extentAfter == 0) {
context.read<OrderLoaderBloc>().add(
OrderLoaderEvent.loadMore(widget.status,
dateFrom: startDate, dateTo: endDate));
OrderLoaderEvent.loadMore(
widget.status,
dateFrom: startDate,
dateTo: endDate,
search: searchQuery,
),
);
return true;
}
@@ -92,6 +85,16 @@ class _SalesPageState extends State<SalesPage> {
setState(() {
searchQuery = value;
});
Future.delayed(const Duration(milliseconds: 800), () {
context.read<OrderLoaderBloc>().add(
OrderLoaderEvent.getByStatus(
widget.status,
dateFrom: startDate,
dateTo: endDate,
search: searchQuery,
),
);
});
},
onDateRangeChanged: (start, end) {
setState(() {
@@ -125,8 +128,7 @@ class _SalesPageState extends State<SalesPage> {
),
loaded: (orders, totalOrder, hasReachedMax,
currentPage, isLoadingMore) {
final filtered = _filterOrders(orders);
if (filtered.isEmpty) {
if (orders.isEmpty) {
return Center(
child: Text(
"Belum ada transaksi saat ini. ",
@@ -138,17 +140,17 @@ class _SalesPageState extends State<SalesPage> {
);
} else {
return ListView.builder(
itemCount: filtered.length,
itemCount: orders.length,
controller: scrollController,
itemBuilder: (context, index) {
return GestureDetector(
onTap: () {
setState(() {
orderDetail = filtered[index];
orderDetail = orders[index];
});
context.read<OrderFormBloc>().add(
OrderFormEvent.started(
filtered[index]));
orders[index]));
},
child: SalesCard(
order: orders[index],