Flutter:在横向模式下在凹口区域内绘制/延伸



目标:在android notch区域内延伸/绘制,特别是在横向模式下。使用2个物理设备进行测试会导致凹口区域在横向模式下不可用(黑色)。

注:在PORTRAIT模式下,使用extendBodyBehindAppBar、ExtendBody和SystemChrome.setEnabledSystemUI模式等成功地扩展到凹口区域,但当屏幕旋转到横向时,凹口区域会被截断而不被使用。

问题:在大多数有弯曲角落的设备上,当以横向模式扩展屏幕时,屏幕看起来很愚蠢,不平衡,凹口部分有一个方形的黑色区域,另一端是弯曲的。

干杯,伙计们。

事实证明,就目前情况来看,这是一个悬而未决的问题。请参阅Github第59236期https://github.com/flutter/flutter/issues/59236

在NATIVE Android 3上,存在用于控制裁剪"凹口"区域中的绘图的选项:

LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT

  • 这是默认行为。在纵向模式下,内容会渲染到剪切区域,但在横向模式下,则会使用信箱。LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
  • 内容以纵向和横向模式渲染到剪切区域中。LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
  • 内容从不渲染到剪切区域中

可以在此处找到更多本机Android信息:https://developer.android.com/guide/topics/display-cutout

目前,与LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT相当的Android原生版本似乎陷入了困境。

如果有人能解决这个问题(也许是平台频道的问题?),请发表评论。

我也遇到过同样的问题,但看起来除了之外

SystemChrome.setEnabledSystemUIOverlays([]);

我们应该将以下内容添加到Android style.xml中:

<style name="AppTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>

在三星S21 Ultra的一个颤振演示项目上测试了这一点,该项目有一个缺口,在纵向和横向模式下一切都如预期。

请注意,我使用的是颤振1.22.6,但我相信同样的方法也适用于最近的颤振。

最新更新