fix(mining-app): 总资产估值仅显示积分值,未包含积分股估值
问题:_calculateTotalAssetValue() 依赖 WebSocket 推送的 _currentPrice 和定时器初始化的 _currentShareBalance,在 WebSocket 未连接或定时器未 启动时这些值均为 0,导致 shareValue=0,总资产仅显示现金余额。 修复:当 WebSocket/_timer 未初始化时,回退到 API 返回的 asset.currentPrice、asset.burnMultiplier 和 asset.shareBalance, 与 _buildAssetList 中积分股估值的计算逻辑保持一致。 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
9adef67bb8
commit
c28ccb6206
|
|
@ -126,13 +126,18 @@ class _AssetPageState extends ConsumerState<AssetPage> {
|
|||
/// 积分股价值 = 当前积分股余额 × (1 + burnMultiplier) × price
|
||||
/// 积分值余额 = 可用积分值 + 冻结积分值
|
||||
double _calculateTotalAssetValue(AssetDisplay? asset) {
|
||||
// 优先使用 WebSocket 推送的价格,否则使用 API 返回的价格
|
||||
final price = double.tryParse(_currentPrice) ?? 0;
|
||||
final burnMultiplier = double.tryParse(_currentBurnMultiplier) ?? 0;
|
||||
// 优先使用 WebSocket 推送的价格,WebSocket 未连接时回退到 API 返回的价格
|
||||
final priceStr = _currentPrice != '0' ? _currentPrice : (asset?.currentPrice ?? '0');
|
||||
final price = double.tryParse(priceStr) ?? 0;
|
||||
final bmStr = _currentBurnMultiplier != '0' ? _currentBurnMultiplier : (asset?.burnMultiplier ?? '0');
|
||||
final burnMultiplier = double.tryParse(bmStr) ?? 0;
|
||||
final multiplierFactor = 1 + burnMultiplier;
|
||||
|
||||
// 积分股价值
|
||||
final shareValue = _currentShareBalance * multiplierFactor * price;
|
||||
// 积分股余额:定时器启动后使用实时值,否则回退到 API 返回的余额
|
||||
final shareBalance = _currentShareBalance > 0
|
||||
? _currentShareBalance
|
||||
: (double.tryParse(asset?.shareBalance ?? '0') ?? 0);
|
||||
final shareValue = shareBalance * multiplierFactor * price;
|
||||
|
||||
// 积分值余额(现金 = 可用 + 冻结)
|
||||
final availableCash = double.tryParse(asset?.availableCash ?? '0') ?? 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue