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

从Google Map屏幕跳转至AR屏幕时持续闪烁问题求助

问题
  • 我做了个Google Map屏幕,初始化时会弹出对话框,点击OK按钮后跳转到集成了AR和相机功能的屏幕
  • 仅在从Map Screen跳转至AR Screen时出现闪烁问题,如果把AR Screen设为初始屏幕,就不会闪烁,功能完全正常
  • 两个屏幕都是stateful组件,都被包裹在Scaffold中
  • 已经尝试移除Scaffold,也试过社区里的诸多解决方案,都没有效果
排查方向和解决办法

1. Map资源未及时释放

Map组件和AR/相机组件都属于高资源占用模块,跳转时Map页面的资源没彻底释放,会导致AR页面初始化时出现资源竞争,引发闪烁。

  • 解决:在Map页面的dispose()方法里手动销毁Map控制器,确保资源释放:
@override
void dispose() {
  _mapController?.dispose();
  super.dispose();
}

2. AR初始化阻塞UI线程

AR和相机的初始化如果同步在initState()里执行,会阻塞UI渲染,导致页面闪烁。

  • 解决:把AR初始化逻辑放到UI渲染完成后的异步任务中:
@override
void initState() {
  super.initState();
  // 等UI构建完成后再初始化AR
  WidgetsBinding.instance.addPostFrameCallback((_) {
    _initAR();
  });
}

Future<void> _initAR() async {
  // 在这里异步执行AR引擎初始化、相机权限申请等操作
}

3. 页面过渡动画与AR渲染冲突

默认的页面跳转过渡动画可能和AR的相机预览渲染产生冲突,引发闪烁。

  • 解决:关闭跳转的过渡动画:
Navigator.push(
  context,
  PageRouteBuilder(
    pageBuilder: (context, _, __) => ARScreen(),
    transitionDuration: Duration.zero,
  ),
);

4. 相机预览提前渲染

AR页面还未初始化完成时,相机预览就先显示出来,会导致闪烁。

  • 解决:添加状态开关,等AR初始化完成后再显示相机预览:
bool _arReady = false;

// 在AR初始化完成后将_arReady设为true
Visibility(
  visible: _arReady,
  child: ARView(/* 你的AR视图代码 */),
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:20:37