# Flutter资金账户显示0.00问题诊断 ## 问题现象 - API返回正确数据: `{"fund": {"balance": 15500.0}}` - Flutter前端显示: `0.00` ## 诊断步骤 ### 1. 检查数据加载 在 `asset_page.dart` 的 `_loadData()` 方法中添加日志: ```dart void _loadData() { print('[AssetPage] 开始加载数据...'); context.read().refreshAll(); } ``` ### 2. 检查Provider更新 在 `AssetProvider` 的 `loadFundAccount()` 方法中添加日志: ```dart Future 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().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` 正确包裹了UI组件: ```dart Consumer( 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', ... ) ```