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

Flutter新建x86安卓模拟器后运行代码出现ExoPlayer相关报错

问题排查方向
  • 你贴出的运行日志全部是ExoPlayer音视频组件、AudioTrack音频输出相关的系统级提示,其中的警告是x86架构API29模拟器镜像的通用兼容问题,和你贴出的按钮点击逻辑没有关联,不需要在这部分日志里定位问题。
  • 代码逻辑本身存在未闭环的状态缺陷,此前在旧模拟器上可运行属于状态未触发的巧合:
    • 点击回调中对_loading的判断是平级if语句,不存在互斥逻辑,第一次点击时setState标记_loading = true后,会立刻命中后续_loading == true的判断分支,和你预期的执行顺序不符。
    • 所有Timer延时逻辑中,没有任何一处将_loading状态重置为false,第一次点击执行完成后,_loading会永久为true,后续点击按钮永远不会进入核心执行逻辑。
  • 新模拟器环境存在兼容风险:
    • 32位x86架构的Android模拟器镜像对Flutter的Timer、动画回调时序支持存在已知问题,若未开启硬件加速,很容易出现延时回调乱序、动画状态不刷新的问题。
    • 更换模拟器后未清除旧构建缓存,可能存在原生依赖和当前模拟器架构不匹配的问题。
    • 若你在新模拟器的开发者选项中关闭了系统动画,AnimatedOpacity的状态回调会出现异常,可能导致按钮点击区域不响应。
解决方案
  • 第一步:过滤无效日志,直接忽略ExoPlayer、AudioTrack相关的提示输出,这类日志不影响业务逻辑运行。
  • 第二步:修复按钮点击的逻辑缺陷,重构onPressed回调为提前返回的互斥逻辑,补全_loading状态重置,参考修改如下:
onPressed: () {
  print("go button clicked");
  // 不满足点击条件时提前返回,避免后续逻辑误执行
  if (!_clickGoButton) {
    print("3 saniye bekle amk.");
    return;
  }
  if (_loading) {
    print("not loading because loading is true.");
    return;
  }
  setState(() {
    _loading = true;
  });
  Timer(const Duration(milliseconds: 650), () {
    setState(() {
      ezAnimation.reverse();
      _secureAndHiddenImage = false;
    });
  });
  Timer(const Duration(milliseconds: 1200), () {
    setState(() {
      _secureAndHiddenHeaders = false;
      _secureAndHiddenContent = false;
    });
  });
  Timer(const Duration(milliseconds: 1800), () {
    setState(() {
      _goButton = false;
    });
  });
  Timer(const Duration(milliseconds: 2200), () {
    setState(() {
      PaginationController.pageNumber.value = 3;
      _loading = false; // 补全加载状态重置,避免后续点击被拦截
    });
  });
}
  • 第三步:调整模拟器配置排除环境问题:
    • 建议删除当前32位x86的API29镜像,创建x86_64架构的API30及以上版本模拟器,在模拟器高级设置中将图形渲染选项改为Hardware - GLES 2.0,开启硬件加速保证动画、计时器回调时序正常。
    • 重新构建前执行flutter clean清除旧构建缓存,再执行flutter pub get拉取对应架构的原生依赖,不要使用热重载/热重启,全量安装应用到新模拟器验证。
    • 打开模拟器开发者选项,将窗口动画缩放、过渡动画缩放、Animator时长缩放全部设置为1x,不要关闭系统动画,避免AnimatedOpacity组件状态异常。
  • 第四步:若按钮存在透明状态下无法点击的问题,给AnimatedOpacity组件添加参数alwaysIncludeSemantics: true,保证显示状态下按钮的语义节点正常响应点击。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:27:20