近日在用flutte/dart 调试机顶盒app时,发现个别盒子一旦启动app就会进入半透明的全屏模式——安卓沉浸模式,而且还从顶部弹出一个蓝色的提示框,如下图
由于机顶盒无法触摸,顶部的弹框也一直无法获得光标,只能按back键关掉弹窗并退出半透明模式。
于是尝试了很多方法,设置SYSTEM_UI_FLAG_XXX 相关参数,始终毫无效果,弹窗依然会出现。
最后偶然发现根组件是Container的页面就不会弹框,而根部组件是Scaffold的就会弹出蓝色的提示框。
查资料发现,对于Scarford组件,由于默认子组件很多,如头部导航栏,底部导航栏,drawer等,在个别盒子上认为调这个的组件是手机app, 于是就会显示沉浸式全屏并弹出上面的提示框。
对于电视来讲,不需要那么多默认组件(顶部、底部导航栏,全屏沉浸模式等),只需要显示简单内容即可,所以没必要使用五脏俱全的Scaffold 组件,使用简单的Container组件就足够了。
果然,把所有页面的Scaffold 组件改成Container组件,再次安装开启后弹框就消失了,也没有半透明沉浸模式。App开启后直接进入内容界面,没有其他默认组件出现。
结论:机顶盒app中,将 Scaffold组件替换成Container 组件就不会出现沉浸全屏模式和弹框提示