riverpod
riverpod copied to clipboard
StateError (Bad state: Cannot use "ref" after the widget was disposed.)
Describe the bug StateError (Bad state: Cannot use "ref" after the widget was disposed.)
To Reproduce When i Click the Pay Now button i am getting this issue. if i remove
await ref
.read(orderDetailNotifierProvider.notifier)
.getOrderDetails(
outletIdentifier: outletDetails
.firstOrNull?.identifier
?.toInt() ??
0,
type: selectedTable != null ? 1 : 2,
typeId: selectedTable?.tableId ??
selectedTakeAway?.takeAwayUid ??
takeAwayUuid,
);
I am not getting any error. <Please add a small sample to that can be executed to reproduce the problem. As a general rule, 100 lines is the maximum>
Expected behavior Get order details and navigate to payement page if it orderdetail is not empty.
####### code------
onPressed: () async {
// Fetch order details
await ref
.read(orderDetailNotifierProvider.notifier)
.getOrderDetails(
outletIdentifier: outletDetails
.firstOrNull?.identifier
?.toInt() ??
0,
type: selectedTable != null ? 1 : 2,
typeId: selectedTable?.tableId ??
selectedTakeAway?.takeAwayUid ??
takeAwayUuid,
);
// Order items if selectedMenuItems is not empty
if (selectedMenuItems.isNotEmpty) {
await ref
.read(orderItemNotifierProvider.notifier)
.orderItem(
cover: widget.cover,
kotNumber: 0,
);
}
// Retrieve order details after fetching
final List<Orders> orderDetails = ref
.read(orderDetailNotifierProvider)
.data
.data
?.orders ??
[];
// Check if selectedMenuItems is empty and orderDetails is not empty
if (selectedMenuItems.isEmpty &&
orderDetails.isNotEmpty) {
// Fetch additional data
ref
.read(selectedTableTakeAwayProvider.notifier)
.getNewTableOrTakeAway(
outletDetails: outletDetails.firstOrNull,
selectedTable: selectedTable,
selectedTakeAway: selectedTakeAway,
);
final newSelectedTable = ref
.read(selectedTableTakeAwayProvider)
.selectedTable;
final newSelectedTakeAway = ref
.read(selectedTableTakeAwayProvider)
.selectedTakeAway;
// Prepare bill
ref
.read(prepareBillNotifierProvider.notifier)
.prepareBill(
ouletIdentifer:
outletDetails.firstOrNull?.identifier ?? 0,
tableId: newSelectedTable?.tableId ?? 0,
roomId: 0,
takeAwayUid: newSelectedTable == null
? newSelectedTakeAway?.takeAwayUid ??
takeAwayUuid
: null,
);
// Get settlement data
ref
.read(settlementDataNotifierProvider.notifier)
.getSettlementData(
outletIdentifier:
outletDetails.firstOrNull?.identifier ?? 0,
);
// Navigate to the payment page
if (context.mounted) {
Navigator.pushNamed(context, AppRoutes.payementPage);
}
}
},