diff --git a/frontend/mining-app/lib/core/network/api_client.dart b/frontend/mining-app/lib/core/network/api_client.dart index 70202f29..98461bed 100644 --- a/frontend/mining-app/lib/core/network/api_client.dart +++ b/frontend/mining-app/lib/core/network/api_client.dart @@ -137,7 +137,8 @@ class ApiClient { if (statusCode == 401) { return UnauthorizedException(); } - final message = e.response?.data?['error']?['message']?[0] ?? '服务器错误'; + final messages = e.response?.data?['error']?['message']; + final message = (messages is List && messages.isNotEmpty) ? messages[0].toString() : '服务器错误'; return ServerException(message, statusCode: statusCode); default: return ServerException(e.message ?? '未知错误'); diff --git a/frontend/mining-app/lib/presentation/pages/c2c/c2c_market_page.dart b/frontend/mining-app/lib/presentation/pages/c2c/c2c_market_page.dart index f4a2cd66..9a0cc6ee 100644 --- a/frontend/mining-app/lib/presentation/pages/c2c/c2c_market_page.dart +++ b/frontend/mining-app/lib/presentation/pages/c2c/c2c_market_page.dart @@ -314,7 +314,7 @@ class _C2cMarketPageState extends ConsumerState ), child: Center( child: Text( - (order.makerNickname ?? order.makerPhone ?? 'U')[0].toUpperCase(), + ((order.makerNickname?.isNotEmpty == true ? order.makerNickname : null) ?? (order.makerPhone?.isNotEmpty == true ? order.makerPhone : null) ?? 'U')[0].toUpperCase(), style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, diff --git a/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart b/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart index 26fc9bf6..87ebc1bd 100644 --- a/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart +++ b/frontend/mining-app/lib/presentation/pages/c2c/c2c_order_detail_page.dart @@ -754,7 +754,9 @@ class _C2cOrderDetailPageState extends ConsumerState { // 发布方 _buildParticipantRow( label: order.isBuy ? '买方 (发布者)' : '卖方 (发布者)', - name: order.makerNickname ?? _maskPhone(order.makerPhone ?? ''), + name: order.makerNickname?.isNotEmpty == true + ? order.makerNickname! + : (order.makerPhone?.isNotEmpty == true ? _maskPhone(order.makerPhone!) : '未知用户'), isMe: isMaker, ), const Divider(height: 24), @@ -762,7 +764,9 @@ class _C2cOrderDetailPageState extends ConsumerState { if (order.takerAccountSequence != null) _buildParticipantRow( label: order.isBuy ? '卖方 (接单者)' : '买方 (接单者)', - name: order.takerNickname ?? _maskPhone(order.takerPhone ?? ''), + name: order.takerNickname?.isNotEmpty == true + ? order.takerNickname! + : (order.takerPhone?.isNotEmpty == true ? _maskPhone(order.takerPhone!) : '未知用户'), isMe: isTaker, ) else @@ -791,7 +795,7 @@ class _C2cOrderDetailPageState extends ConsumerState { ), child: Center( child: Text( - name[0].toUpperCase(), + name.isNotEmpty ? name[0].toUpperCase() : 'U', style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold,