diff --git a/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart b/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart index 0b73e0b7..b8304e41 100644 --- a/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart +++ b/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart @@ -42,6 +42,16 @@ class _C2cOrderDetailPageState extends ConsumerState { }); } + @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)); diff --git a/frontend/mining-app/lib/presentation/providers/c2c_providers.dart b/frontend/mining-app/lib/presentation/providers/c2c_providers.dart index 018e157e..3bf2f949 100644 --- a/frontend/mining-app/lib/presentation/providers/c2c_providers.dart +++ b/frontend/mining-app/lib/presentation/providers/c2c_providers.dart @@ -11,7 +11,7 @@ final c2cOrdersProvider = FutureProvider.family( 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( 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( ); /// C2C订单详情 Provider(autoDispose: 每次进入详情页都获取最新数据) +/// 活跃状态订单(PENDING/MATCHED/PAID)每10秒自动刷新,终态订单不刷新 final c2cOrderDetailProvider = FutureProvider.autoDispose.family( (ref, orderNo) async { final dataSource = getIt(); - 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; }, );