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

Flutter 3.13升级后Android端中文文本偶尔消失问题求助

Flutter 3.13升级后Android端中文文本偶尔消失问题排查思路

问题描述

  • 基于Flutter开发的应用,部分Android用户反馈偶尔打开应用时中文文本完全不显示,正常与异常状态对比见下图:
    正常与异常显示对比
  • Flutter从3.7升级到3.13后出现此问题,仅Android用户上报该异常
  • 用户卸载应用、重启手机后重新安装,问题即可解决,但开发者无法复现

异常时日志(已翻译)

2023-10-19 11:57:55.904 25798-25961 SuggestManager          com.miui.securitycenter.remote       E  打开应用名称 = com.xxx.xxx
2023-10-19 11:57:55.910  9459-9459  ForceDarkHelper         com.xxx.xxx                 D  通过检查排除列表更新: 包名: com.xxx.xxx 页面: com.xxx.xxx.MainActivity@b27f842
2023-10-19 11:57:55.911  9459-9490  ViewContentFactory      com.xxx.xxx                 D  初始化ViewContentFetcher类
2023-10-19 11:57:55.911  9459-9490  ContentCatcher          com.xxx.xxx                 I  ViewContentFetcher : ViewContentFetcher
2023-10-19 11:57:55.911  9459-9490  ViewContentFactory      com.xxx.xxx                 D  创建拦截器耗时0ms
2023-10-19 11:57:55.911  9459-9459  ForceDarkHelper         com.xxx.xxx                 D  通过检查排除列表更新: 包名: com.xxx.xxx 页面: com.xxx.xxx.MainActivity@b27f842
2023-10-19 11:57:55.912  9459-9459  chatty                  com.xxx.xxx                 I  uid=10295(com.xxx.xxx) 重复1行
2023-10-19 11:57:55.912  9459-9459  ForceDarkHelper         com.xxx.xxx                 D  通过检查排除列表更新: 包名: com.xxx.xxx 页面: com.xxx.xxx.MainActivity@b27f842
2023-10-19 11:57:55.932  9459-9459  ForceDarkHelper         com.xxx.xxx                 D  通过检查排除列表更新: 包名: com.xxx.xxx 页面: com.xxx.xxx.MainActivity@b27f842
2023-10-19 11:57:55.932  9459-9459  ForceDarkHelper         com.xxx.xxx                 D  通过检查排除列表更新: 包名: com.xxx.xxx 页面: com.xxx.xxx.MainActivity@b27f842
2023-10-19 11:57:55.953  9459-9459  ForceDarkHelper         com.xxx.xxx                 D  通过检查排除列表更新: 包名: com.xxx.xxx 页面: com.xxx.xxx.MainActivity@b27f842
2023-10-19 11:57:55.958  9459-9459  EgretLoader             com.xxx.xxx                 D  EgretLoader(Context context)
2023-10-19 11:57:55.959  9459-9459  EgretLoader             com.xxx.xxx                 D  Context不是Activity类型
2023-10-19 11:57:55.975  9459-9459  SurfaceView             com.xxx.xxx                 D  更新null, mIsCastMode = false
2023-10-19 11:57:55.998  9459-9459  ForceDarkHelper         com.xxx.xxx                 D  通过检查排除列表更新: 包名: com.xxx.xxx 页面: com.xxx.xxx.MainActivity@b27f842
2023-10-19 11:57:56.001  9459-9459  EgretLoader             com.xxx.xxx                 D  EgretLoader(Context context)
2023-10-19 11:57:56.001  9459-9459  EgretLoader             com.xxx.xxx                 D  Context不是Activity类型
2023-10-19 11:57:56.024  9459-9459  ForceDarkHelper         com.xxx.xxx                 D  通过检查排除列表更新: 包名: com.xxx.xxx 页面: com.xxx.xxx.MainActivity@b27f842
2023-10-19 11:57:56.028  9459-9459  EgretLoader             com.xxx.xxx                 D  EgretLoader(Context context)
2023-10-19 11:57:56.029  9459-9459  EgretLoader             com.xxx.xxx                 D  Context不是Activity类型

排查思路

1. 字体加载异常方向

  • 对比Flutter 3.7与3.13版本的FontLoader、TextStyle源码,确认字体异步加载时机、缓存策略是否有变更
  • 应用启动时提前预加载中文字体:在WidgetsFlutterBinding.ensureInitialized()后主动调用字体加载方法,避免懒加载导致的渲染延迟
  • 验证字体文件完整性:替换字体文件或改用系统默认中文字体测试,排除打包过程中字体文件损坏的可能

2. Android系统适配方向

  • 针对MIUI系统重点排查:日志中出现ForceDarkHelper、EgretLoader等MIUI专属组件,可能与系统深色模式、应用拦截有关
    • 在android/app/src/main/res/values/styles.xml中添加<item name="android:forceDarkAllowed">false</item>,禁用系统深色模式自动转换
    • 引导用户关闭该应用的"省电优化"、"后台限制",避免系统杀死字体加载相关进程
  • 测试Android 12+设备兼容性:Flutter 3.13对Android 12/13的适配可能引入新问题,验证不同版本系统的触发情况

3. Flutter引擎渲染方向

  • 收集Flutter引擎日志:引导用户在异常出现时获取flutter run --verbose输出,重点查看TextPainter、ParagraphBuilder相关报错
  • 尝试Flutter版本切换:升级到3.13最新补丁版本,或降级到3.13初始版本,确认是否为特定版本bug
  • 检查文本组件状态:确认是否存在状态更新时未触发文本重建的情况,比如const修饰的文本组件未随语言环境变化更新

4. 缓存与安装异常方向

  • 检查应用缓存:启动时校验字体缓存文件完整性,若损坏则清除缓存并重新加载
  • 确认签名配置:升级Flutter版本后,确保应用签名未变更,避免签名不一致导致资源加载失败
  • 测试增量更新:若使用增量更新,检查增量包是否完整覆盖字体资源,排除资源合并异常

内容的提问来源于stack exchange,提问作者cj0x39e

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:35:19