order load more

This commit is contained in:
efrilm 2025-10-27 21:57:25 +07:00
parent 8bd61eb58e
commit 34555dd789

View File

@ -8,19 +8,39 @@ import '../../../components/error/order_loader_error_state_widget.dart';
import '../../../components/loader/loader_with_text.dart';
import 'order_title.dart';
class OrderLeftPanel extends StatelessWidget {
class OrderLeftPanel extends StatefulWidget {
final String status;
final OrderLoaderState state;
const OrderLeftPanel({super.key, required this.state, required this.status});
@override
State<OrderLeftPanel> createState() => _OrderLeftPanelState();
}
class _OrderLeftPanelState extends State<OrderLeftPanel> {
ScrollController scrollController = ScrollController();
@override
Widget build(BuildContext context) {
return Column(
return NotificationListener<ScrollNotification>(
onNotification: (notification) {
if (notification is ScrollEndNotification &&
scrollController.position.extentAfter == 0) {
context.read<OrderLoaderBloc>().add(
OrderLoaderEvent.fetched(status: widget.status),
);
return true;
}
return true;
},
child: Column(
children: [
OrderTitle(
startDate: state.startDate,
endDate: state.endDate,
title: status == 'pending' ? "Pending Pesanan" : "Daftar Pesanan",
startDate: widget.state.startDate,
endDate: widget.state.endDate,
title: widget.status == 'pending'
? "Pending Pesanan"
: "Daftar Pesanan",
onChanged: (value) {
Future.delayed(const Duration(milliseconds: 800), () {
context.read<OrderLoaderBloc>().add(
@ -35,12 +55,13 @@ class OrderLeftPanel extends StatelessWidget {
},
),
Expanded(
child: state.failureOption.fold(() {
if (state.isFetching) {
child: widget.state.failureOption.fold(
() {
if (widget.state.isFetching) {
return Center(child: LoaderWithText());
}
if (state.orders.isEmpty) {
if (widget.state.orders.isEmpty) {
return Center(
child: Text(
"Belum ada transaksi saat ini. ",
@ -50,22 +71,33 @@ class OrderLeftPanel extends StatelessWidget {
}
return ListView.builder(
itemCount: state.orders.length,
itemCount: widget.state.orders.length,
controller: scrollController,
itemBuilder: (context, index) => GestureDetector(
onTap: () {
context.read<OrderLoaderBloc>().add(
OrderLoaderEvent.setSelectedOrder(state.orders[index]),
OrderLoaderEvent.setSelectedOrder(
widget.state.orders[index],
),
);
},
child: OrderCard(
order: state.orders[index],
isActive: state.orders[index] == state.selectedOrder,
order: widget.state.orders[index],
isActive:
widget.state.orders[index] ==
widget.state.selectedOrder,
),
),
);
}, (f) => OrderLoaderErrorStateWidget(failure: f, status: status)),
},
(f) => OrderLoaderErrorStateWidget(
failure: f,
status: widget.status,
),
),
),
],
),
);
}
}