You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter发布模式下数据不显示问题求助

Debug正常但Release版本无数据(本地Directus数据库)排查方案

1. 检查网络权限配置

  • Android:确认AndroidManifest.xml中已添加INTERNET权限,Release模式不会自动继承Debug的权限配置:
<uses-permission android:name="android.permission.INTERNET" />
  • iOS:若Directus使用HTTP协议,需在Info.plist中关闭ATS限制:
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

2. 禁用或配置代码混淆

Release模式的R8/ProGuard混淆可能破坏网络请求、JSON解析相关类的逻辑:

  • 临时关闭混淆测试:在build.gradle的release配置中修改:
buildTypes {
    release {
        minifyEnabled false
        shrinkResources false
        // 其他配置
    }
}
  • 若需保留混淆,在proguard-rules.pro中添加类保留规则:
# 保留API响应类、实体类
-keep class com.yourpackage.models.** { *; }
# 若使用Gson
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.google.gson.** { *; }

3. 验证Directus环境配置一致性

  • 确认Debug和Release模式下的Directus API地址、访问Token完全一致,避免Release环境误配置导致返回空数据。
  • 在Release模式下添加日志(确保未禁用日志输出),打印response原始内容,查看Directus实际返回结果。

4. 修复数据解析逻辑

针对ViewModel中的解析代码:

_cardsList = _apiCardsResponse.data?.toJson()["cards"];
  • 检查toJson()方法在Release模式下是否正常工作,可能因混淆导致方法失效。建议直接使用原始响应数据解析,或确保实体类的序列化方法被保留。
  • 添加日志打印_apiCardsResponse.data?.toJson()的完整内容,确认是否能正确取出"cards"字段。

5. 完善异常捕获逻辑

当前try-catch仅捕获基础错误,可能遗漏异步错误或未捕获的Error:

try {
  dynamic response = await _homeRepository.getCards(value: value);
  _apiCardsResponse = ApiResponse.completed(response);
  _cardsList = _apiCardsResponse.data?.toJson()["cards"];
} catch (error, stackTrace) {
  _apiCardsResponse = ApiResponse.error(error.toString());
  print("获取卡片数据错误: $error, 堆栈信息: $stackTrace");
}

6. 优化ListView空数据处理

当前代码未处理_cardsList为null的情况,建议补充空状态判断:

homeViewModel.getCardsList.isEmpty 
    ? Center(child: Text("暂无数据"))
    : ListView.builder(
        itemCount: homeViewModel.getCardsList.length,
        itemBuilder: ((context, index) => CardsComponent(...))
      ),

内容的提问来源于stack exchange,提问作者Marc.Msan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:15:02