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:
hailin 2026-01-30 11:03:41 -08:00
parent 9adef67bb8
commit c28ccb6206
1 changed files with 10 additions and 5 deletions

View File

@ -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;