diff --git a/flutter_monisuo/build/99111e0c5b6228829e100ef67db14ea2.cache.dill.track.dill b/flutter_monisuo/build/99111e0c5b6228829e100ef67db14ea2.cache.dill.track.dill index 3593812..2f08543 100644 Binary files a/flutter_monisuo/build/99111e0c5b6228829e100ef67db14ea2.cache.dill.track.dill and b/flutter_monisuo/build/99111e0c5b6228829e100ef67db14ea2.cache.dill.track.dill differ diff --git a/flutter_monisuo/lib/data/models/account_models.dart b/flutter_monisuo/lib/data/models/account_models.dart index cf418fe..56cc93b 100644 --- a/flutter_monisuo/lib/data/models/account_models.dart +++ b/flutter_monisuo/lib/data/models/account_models.dart @@ -78,16 +78,30 @@ class AccountTrade { }); factory AccountTrade.fromJson(Map json) { + // 后端返回 value(当前价值),前端用 currentValue + final quantityNum = + double.tryParse(json['quantity']?.toString() ?? '0') ?? 0; + final avgPriceNum = + double.tryParse(json['avgPrice']?.toString() ?? '0') ?? 0; + final currentValueNum = + double.tryParse(json['value']?.toString() ?? '0') ?? + double.tryParse(json['currentValue']?.toString() ?? '0') ?? + 0; + final totalCostNum = quantityNum * avgPriceNum; + final profitNum = currentValueNum - totalCostNum; + final double profitRateNum = + totalCostNum > 0 ? (profitNum / totalCostNum) * 100.0 : 0.0; + return AccountTrade( id: json['id'] as int? ?? 0, userId: json['userId'] as int? ?? 0, coinCode: json['coinCode'] as String? ?? '', quantity: json['quantity']?.toString() ?? '0', avgPrice: json['avgPrice']?.toString() ?? '0.00', - totalCost: json['totalCost']?.toString() ?? '0.00', - currentValue: json['currentValue']?.toString() ?? '0.00', - profit: json['profit']?.toString() ?? '0.00', - profitRate: (json['profitRate'] as num?)?.toDouble() ?? 0, + totalCost: totalCostNum.toStringAsFixed(2), + currentValue: currentValueNum.toStringAsFixed(2), + profit: profitNum.toStringAsFixed(2), + profitRate: profitRateNum, updateTime: json['updateTime'] != null ? DateTime.tryParse(json['updateTime']) : null, diff --git a/flutter_monisuo/lib/data/services/asset_service.dart b/flutter_monisuo/lib/data/services/asset_service.dart index dbe1c9e..30ff3ab 100644 --- a/flutter_monisuo/lib/data/services/asset_service.dart +++ b/flutter_monisuo/lib/data/services/asset_service.dart @@ -50,7 +50,8 @@ class AssetService { ); if (response.success && response.data != null) { - final list = response.data!['list'] as List?; + // 后端返回格式: {"positions": [...]} + final list = response.data!['positions'] as List?; final accounts = list?.map((e) => AccountTrade.fromJson(e as Map)).toList() ?? []; return ApiResponse.success(accounts, response.message); } diff --git a/flutter_monisuo/lib/ui/pages/asset/transfer_page.dart b/flutter_monisuo/lib/ui/pages/asset/transfer_page.dart index 52bfca8..614e20b 100644 --- a/flutter_monisuo/lib/ui/pages/asset/transfer_page.dart +++ b/flutter_monisuo/lib/ui/pages/asset/transfer_page.dart @@ -265,7 +265,7 @@ class _TransferPageState extends State { child: Row( children: [ Icon( - LucideIcons.alertTriangle, + LucideIcons.triangleAlert, size: 14, color: AppColorScheme.warning, ),