fix(mining-app): C2C订单详情页自动刷新,列表刷新间隔缩短
- 订单详情 Provider 活跃状态(PENDING/MATCHED/PAID)每10秒自动刷新 过期/完成/取消后停止刷新,节省资源 - 市场订单和我的订单列表刷新间隔从1分钟缩短到30秒 - 离开订单详情页时立即刷新市场和我的订单列表 确保过期恢复的新PENDING订单及时在列表中显示 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
33dda98e81
commit
bcfa5143e3
|
|
@ -42,6 +42,16 @@ class _C2cOrderDetailPageState extends ConsumerState<C2cOrderDetailPage> {
|
|||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
// 离开详情页时刷新市场和我的订单列表(确保过期恢复的新订单及时显示)
|
||||
ref.invalidate(c2cOrdersProvider(null));
|
||||
ref.invalidate(c2cOrdersProvider('BUY'));
|
||||
ref.invalidate(c2cOrdersProvider('SELL'));
|
||||
ref.invalidate(myC2cOrdersProvider);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final orderAsync = ref.watch(c2cOrderDetailProvider(widget.orderNo));
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ final c2cOrdersProvider = FutureProvider.family<C2cOrdersPageModel, String?>(
|
|||
final result = await dataSource.getC2cOrders(type: type);
|
||||
|
||||
ref.keepAlive();
|
||||
final timer = Timer(const Duration(minutes: 1), () {
|
||||
final timer = Timer(const Duration(seconds: 30), () {
|
||||
ref.invalidateSelf();
|
||||
});
|
||||
ref.onDispose(() => timer.cancel());
|
||||
|
|
@ -27,7 +27,7 @@ final myC2cOrdersProvider = FutureProvider<C2cOrdersPageModel>(
|
|||
final result = await dataSource.getMyC2cOrders();
|
||||
|
||||
ref.keepAlive();
|
||||
final timer = Timer(const Duration(minutes: 1), () {
|
||||
final timer = Timer(const Duration(seconds: 30), () {
|
||||
ref.invalidateSelf();
|
||||
});
|
||||
ref.onDispose(() => timer.cancel());
|
||||
|
|
@ -37,10 +37,21 @@ final myC2cOrdersProvider = FutureProvider<C2cOrdersPageModel>(
|
|||
);
|
||||
|
||||
/// C2C订单详情 Provider(autoDispose: 每次进入详情页都获取最新数据)
|
||||
/// 活跃状态订单(PENDING/MATCHED/PAID)每10秒自动刷新,终态订单不刷新
|
||||
final c2cOrderDetailProvider = FutureProvider.autoDispose.family<C2cOrderModel, String>(
|
||||
(ref, orderNo) async {
|
||||
final dataSource = getIt<TradingRemoteDataSource>();
|
||||
return dataSource.getC2cOrderDetail(orderNo);
|
||||
final result = await dataSource.getC2cOrderDetail(orderNo);
|
||||
|
||||
// 活跃状态订单自动刷新(过期/完成/取消后停止刷新)
|
||||
if (result.isPending || result.isMatched || result.isPaid) {
|
||||
final timer = Timer(const Duration(seconds: 10), () {
|
||||
ref.invalidateSelf();
|
||||
});
|
||||
ref.onDispose(() => timer.cancel());
|
||||
}
|
||||
|
||||
return result;
|
||||
},
|
||||
);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue