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:
hailin 2026-02-01 02:23:21 -08:00
parent 33dda98e81
commit bcfa5143e3
2 changed files with 24 additions and 3 deletions

View File

@ -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));

View File

@ -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订单详情 ProviderautoDispose:
/// PENDING/MATCHED/PAID10
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;
},
);