fix(c2c): 我的订单显示用户角色视角,修复详情页缓存
1. "我的"列表根据用户是maker/taker判断实际角色, 接买单(taker)时显示"卖出"而非"买入" 2. 订单详情 provider 改为 autoDispose,每次进入详情页 都从API获取最新数据,避免显示旧的数量和状态 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
f1c99949ad
commit
f9835c388e
|
|
@ -100,7 +100,7 @@ class _C2cMarketPageState extends ConsumerState<C2cMarketPage>
|
||||||
children: [
|
children: [
|
||||||
_buildOrderList(context, 'SELL'), // 购买页面显示卖单
|
_buildOrderList(context, 'SELL'), // 购买页面显示卖单
|
||||||
_buildOrderList(context, 'BUY'), // 出售页面显示买单
|
_buildOrderList(context, 'BUY'), // 出售页面显示买单
|
||||||
_buildMyOrderList(context),
|
_buildMyOrderList(context, accountSequence),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -233,7 +233,7 @@ class _C2cMarketPageState extends ConsumerState<C2cMarketPage>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildMyOrderList(BuildContext context) {
|
Widget _buildMyOrderList(BuildContext context, String accountSequence) {
|
||||||
final ordersAsync = ref.watch(myC2cOrdersProvider);
|
final ordersAsync = ref.watch(myC2cOrdersProvider);
|
||||||
|
|
||||||
return ordersAsync.when(
|
return ordersAsync.when(
|
||||||
|
|
@ -277,7 +277,7 @@ class _C2cMarketPageState extends ConsumerState<C2cMarketPage>
|
||||||
itemCount: orders.length,
|
itemCount: orders.length,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
final order = orders[index];
|
final order = orders[index];
|
||||||
return _buildMyOrderCard(context, order);
|
return _buildMyOrderCard(context, order, accountSequence);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
@ -439,8 +439,14 @@ class _C2cMarketPageState extends ConsumerState<C2cMarketPage>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildMyOrderCard(BuildContext context, C2cOrderModel order) {
|
Widget _buildMyOrderCard(BuildContext context, C2cOrderModel order, String accountSequence) {
|
||||||
final isDark = AppColors.isDark(context);
|
final isDark = AppColors.isDark(context);
|
||||||
|
// 判断当前用户在这笔订单中的角色(买方/卖方)
|
||||||
|
// maker 创建订单: BUY→maker是买方, SELL→maker是卖方
|
||||||
|
// taker 接单: BUY→taker是卖方, SELL→taker是买方
|
||||||
|
final isMaker = order.makerAccountSequence == accountSequence;
|
||||||
|
final isUserBuying = (isMaker && order.isBuy) || (!isMaker && order.isSell);
|
||||||
|
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () => context.push(Routes.c2cOrderDetail, extra: order.orderNo),
|
onTap: () => context.push(Routes.c2cOrderDetail, extra: order.orderNo),
|
||||||
child: Container(
|
child: Container(
|
||||||
|
|
@ -462,15 +468,15 @@ class _C2cMarketPageState extends ConsumerState<C2cMarketPage>
|
||||||
Container(
|
Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: (order.isBuy ? _green : _red).withOpacity(isDark ? 0.2 : 0.1),
|
color: (isUserBuying ? _green : _red).withOpacity(isDark ? 0.2 : 0.1),
|
||||||
borderRadius: BorderRadius.circular(4),
|
borderRadius: BorderRadius.circular(4),
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
order.typeText,
|
isUserBuying ? '买入' : '卖出',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: order.isBuy ? _green : _red,
|
color: isUserBuying ? _green : _red,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,8 @@ final myC2cOrdersProvider = FutureProvider<C2cOrdersPageModel>(
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
/// C2C订单详情 Provider
|
/// C2C订单详情 Provider(autoDispose: 每次进入详情页都获取最新数据)
|
||||||
final c2cOrderDetailProvider = FutureProvider.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);
|
return dataSource.getC2cOrderDetail(orderNo);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue