用户登录

打开内容页面媒体比例底板,显示现在用的是原始,双击内容图像打开全屏幕的显示,然后点按页面右上角这个关闭小图标,你会发现没有回到正常模式的内容页面。

打开 post_show_store.dart ,点按关闭小图标,会执行这里的 restoreMediaAspectRatio,在这个方法里,先会设备里提取数据,然后执行 setMediaAspectRatio,执行它的时候会判断 data 不等于 null 。

因为如果内容媒体的比例是原始,这个 data 就会是 null ,所以就没有执行 setMediaAspectRatio ,这样应用界面也就不会有变化。

这里我们可以把判断的条件删除掉。 然后重新启动一下应用。

在内容列表,打开一个内容页面,打开内容的媒体比例底板,显示是原始。双击内容图像,使用全屏。然后点按这个关闭小图标,这次就回到了正常模式的内容页面了。

反应

这里又会出现一个问题,就是回到正常模式的内容页面以后,你会发现系统的状态栏没有显示出来。我们可以设置一个反应,名字是 setSystemUiWhenMediaAspectRatioChanged。 这个反应监视的是 mediaAspectRatio 这个数据,要做的反应这里,可以判断一下 mediaAspectRatio 是否等于 0 。

如果是可以用一下 SystemChrome.setEnabledSystemUIMode ,设置成 SystemUiMode.immersiveSticky 。 else,不然的话也可以执行一下SystemChrome.setEnabledSystemUIMode ,设置成 SystemUiMode.manual,再添加一个 overlays,一个列表,里面添加一个 SystemUiOverlay.top ,再添加一个 SystemUiOverlay.bottom 。

这样如果 mediaAspectRatio 变成 0 ,就会隐藏系统界面,如果不是 0 ,就会显示系统界面,也就是顶部状态栏还有底部导航栏。

在 initReactions 这里,用一下 reactionDisposers.add,把执行 setSystemUiWhenMediaAspectRatioChanged 返回的结果交给这个 add 方法。

重新启动一下应用。

在内容列表,打开一个内容,然后打开内容的全屏模式,会隐藏系统界面。点按关闭按钮,回到正常模式,你会发现这个状态栏就又会显示出来。

媒体比例变化时设置系统界面《 Flutter 移动端实例:沉浸模式 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点