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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final orderAsync = ref.watch(c2cOrderDetailProvider(widget.orderNo));
|
final orderAsync = ref.watch(c2cOrderDetailProvider(widget.orderNo));
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ final c2cOrdersProvider = FutureProvider.family<C2cOrdersPageModel, String?>(
|
||||||
final result = await dataSource.getC2cOrders(type: type);
|
final result = await dataSource.getC2cOrders(type: type);
|
||||||
|
|
||||||
ref.keepAlive();
|
ref.keepAlive();
|
||||||
final timer = Timer(const Duration(minutes: 1), () {
|
final timer = Timer(const Duration(seconds: 30), () {
|
||||||
ref.invalidateSelf();
|
ref.invalidateSelf();
|
||||||
});
|
});
|
||||||
ref.onDispose(() => timer.cancel());
|
ref.onDispose(() => timer.cancel());
|
||||||
|
|
@ -27,7 +27,7 @@ final myC2cOrdersProvider = FutureProvider<C2cOrdersPageModel>(
|
||||||
final result = await dataSource.getMyC2cOrders();
|
final result = await dataSource.getMyC2cOrders();
|
||||||
|
|
||||||
ref.keepAlive();
|
ref.keepAlive();
|
||||||
final timer = Timer(const Duration(minutes: 1), () {
|
final timer = Timer(const Duration(seconds: 30), () {
|
||||||
ref.invalidateSelf();
|
ref.invalidateSelf();
|
||||||
});
|
});
|
||||||
ref.onDispose(() => timer.cancel());
|
ref.onDispose(() => timer.cancel());
|
||||||
|
|
@ -37,10 +37,21 @@ final myC2cOrdersProvider = FutureProvider<C2cOrdersPageModel>(
|
||||||
);
|
);
|
||||||
|
|
||||||
/// C2C订单详情 Provider(autoDispose: 每次进入详情页都获取最新数据)
|
/// C2C订单详情 Provider(autoDispose: 每次进入详情页都获取最新数据)
|
||||||
|
/// 活跃状态订单(PENDING/MATCHED/PAID)每10秒自动刷新,终态订单不刷新
|
||||||
final c2cOrderDetailProvider = FutureProvider.autoDispose.family<C2cOrderModel, String>(
|
final c2cOrderDetailProvider = FutureProvider.autoDispose.family<C2cOrderModel, String>(
|
||||||
(ref, orderNo) async {
|
(ref, orderNo) async {
|
||||||
final dataSource = getIt<TradingRemoteDataSource>();
|
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