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: [
|
||||
_buildOrderList(context, 'SELL'), // 购买页面显示卖单
|
||||
_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);
|
||||
|
||||
return ordersAsync.when(
|
||||
|
|
@ -277,7 +277,7 @@ class _C2cMarketPageState extends ConsumerState<C2cMarketPage>
|
|||
itemCount: orders.length,
|
||||
itemBuilder: (context, 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);
|
||||
// 判断当前用户在这笔订单中的角色(买方/卖方)
|
||||
// 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(
|
||||
onTap: () => context.push(Routes.c2cOrderDetail, extra: order.orderNo),
|
||||
child: Container(
|
||||
|
|
@ -462,15 +468,15 @@ class _C2cMarketPageState extends ConsumerState<C2cMarketPage>
|
|||
Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
||||
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),
|
||||
),
|
||||
child: Text(
|
||||
order.typeText,
|
||||
isUserBuying ? '买入' : '卖出',
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: order.isBuy ? _green : _red,
|
||||
color: isUserBuying ? _green : _red,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@ final myC2cOrdersProvider = FutureProvider<C2cOrdersPageModel>(
|
|||
},
|
||||
);
|
||||
|
||||
/// C2C订单详情 Provider
|
||||
final c2cOrderDetailProvider = FutureProvider.family<C2cOrderModel, String>(
|
||||
/// C2C订单详情 Provider(autoDispose: 每次进入详情页都获取最新数据)
|
||||
final c2cOrderDetailProvider = FutureProvider.autoDispose.family<C2cOrderModel, String>(
|
||||
(ref, orderNo) async {
|
||||
final dataSource = getIt<TradingRemoteDataSource>();
|
||||
return dataSource.getC2cOrderDetail(orderNo);
|
||||
|
|
|
|||
Loading…
Reference in New Issue