# Flutter资金账户显示0.00问题诊断

## 问题现象
- API返回正确数据: `{"fund": {"balance": 15500.0}}`
- Flutter前端显示: `0.00`

## 诊断步骤

### 1. 检查数据加载
在 `asset_page.dart` 的 `_loadData()` 方法中添加日志:
```dart
void _loadData() {
  print('[AssetPage] 开始加载数据...');
  context.read<AssetProvider>().refreshAll();
}
```

### 2. 检查Provider更新
在 `AssetProvider` 的 `loadFundAccount()` 方法中添加日志:
```dart
Future<void> loadFundAccount({bool force = false}) async {
  print('[AssetProvider] loadFundAccount called, force=$force');
  
  if (_fundAccountLoaded && !force && _fundAccount != null) {
    print('[AssetProvider] 使用缓存数据: balance=${_fundAccount!.balance}');
    return;
  }

  try {
    final response = await _assetService.getFundAccount();
    print('[AssetProvider] API返回: success=${response.success}');
    
    if (response.success) {
      _fundAccount = response.data;
      print('[AssetProvider] 资金账户数据: balance=${_fundAccount?.balance}');
      _fundAccountLoaded = true;
      notifyListeners();
    }
  } catch (e) {
    print('[AssetProvider] 加载失败: $e');
  }
}
```

### 3. 检查UI绑定
在 `_FundAccountCard` 的 `build()` 方法中添加日志:
```dart
@override
Widget build(BuildContext context) {
  final fund = provider.fundAccount;
  print('[FundAccountCard] fund=$fund, balance=${fund?.balance}');
  
  return GlassPanel(
    child: Text(
      fund?.balance ?? '0.00',
      style: ...
    ),
  );
}
```

## 可能的原因

### 原因1: 数据未加载
**症状**: `fund` 为 null
**解决**: 确保调用了 `refreshAll()`

### 原因2: Provider未更新
**症状**: 数据加载了，但UI未更新
**解决**: 检查 `notifyListeners()` 是否被调用

### 原因3: 数据解析错误
**症状**: 数据加载了，但字段为null
**解决**: 检查 `AccountFund.fromJson()` 的解析逻辑

## 快速修复

### 方案1: 强制刷新
修改 `asset_page.dart`:
```dart
@override
void initState() {
  super.initState();
  WidgetsBinding.instance.addPostFrameCallback((_) {
    // 强制刷新，不使用缓存
    context.read<AssetProvider>().refreshAll(force: true);
  });
}
```

### 方案2: 添加空数据处理
修改 `_FundAccountCard`:
```dart
Text(
  fund?.balance ?? '0.00',
  style: GoogleFonts.spaceGrotesk(
    fontSize: 28,
    fontWeight: FontWeight.bold,
    color: colorScheme.onSurface,
  ),
),
if (fund == null)
  Text(
    '数据加载中...',
    style: TextStyle(fontSize: 12, color: colorScheme.onSurfaceVariant),
  ),
```

### 方案3: 检查数据绑定
确保 `Consumer<AssetProvider>` 正确包裹了UI组件:
```dart
Consumer<AssetProvider>(
  builder: (context, provider, _) {
    return _FundAccountCard(provider: provider);
  },
)
```

## 测试验证

1. 重启Flutter应用（完全关闭后重新打开）
2. 查看控制台日志
3. 检查数据流:
   - API调用 → Provider更新 → UI渲染

## 临时解决方案

如果问题依然存在，直接使用 overview 数据:
```dart
// 从overview中获取资金余额
final overview = provider.overview;
Text(
  overview?.fundBalance ?? '0.00',
  ...
)
```
