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:
hailin 2026-01-31 21:02:04 -08:00
parent f1c99949ad
commit f9835c388e
2 changed files with 15 additions and 9 deletions

View File

@ -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 : BUYmaker是买方, SELLmaker是卖方
// taker : BUYtaker是卖方, SELLtaker是买方
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,
), ),
), ),
), ),

View File

@ -36,8 +36,8 @@ final myC2cOrdersProvider = FutureProvider<C2cOrdersPageModel>(
}, },
); );
/// C2C订单详情 Provider /// C2C订单详情 ProviderautoDispose:
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);