如何检查设备是否需要 SafeArea?(需要底部/顶部填充)

pun*_*ife 12 dart flutter

有没有办法可以检查运行该应用程序的设备是否需要 SafeArea。我需要根据这个 true 或 false 值运行代码。我不需要使用 SafeArea 小部件。如果设备需要填充,我只需要正确或错误的答案。

例如。像 iPhone 8 这样的设备不需要填充,即使 Widget 包裹在 SafeArea 小部件中也不会有填充。

例如。像 iPhone X 这样的设备确实需要填充,如果 Widget 被包裹在 SafeArea 中就会有填充。

SafeArea 小部件如何判断设备是否需要填充?我查看了 SafeArea 小部件代码,但无法理解会发生什么来告诉它设备是否需要填充。

小智 22

您可以检查顶部和底部填充是否 > 0 以查看用户的设备是否有缺口:

window.viewPadding
Run Code Online (Sandbox Code Playgroud)

以下是 iPhone 11 Pro Max 的示例:

这是 iPhone 11 Pro Max 的示例

  • 注意:这与 MediaQuery.of(context).viewPadding 有很大不同。对我来说 MediaQuery.of(context).viewPadding 没有产生任何东西,但是这确实产生了。再次感谢。 (2认同)

die*_*per 11

您可以使用MediaQuery并从中获取viewPadding

MediaQuery.of(context).viewPadding
Run Code Online (Sandbox Code Playgroud)