appandflow / appandflow/react-native-safe-area-context

SafeAreaView does not detect if a phone have a dynamic island or not

未關閉
#682 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
TypeScript
星號
2.8k
分支
258
平均合併
3 天 1 小時
30 天內合併 PR
2

描述

### Description

I want the SafeAreaView to apply dynamic padding depending on the actual device’s top inset. For example:

iPhone 16 Pro Max → larger status bar + Dynamic Island → needs more top/bottom safe area padding

Pixel 4 → no notch → should have smaller insets

Other Android devices → shapes vary (hole-punch, waterfall, etc.)

Right now my implementation is overly simplified:

```
const hasNotch = Platform.OS === 'ios'

return isTransparent ? content : (

{content}

)

```

Expected behavior

SafeAreaView should automatically apply padding based on the real device safe area insets, not a hardcoded boolean. Ideally:

Use the actual safe area bottom inset

Add additional padding only when needed

Work correctly across iOS + Android + future devices

![Image](https://github.com/user-attachments/assets/4b6b2d7c-cc51-4a33-a424-52d6c27e03db)

![Image](https://github.com/user-attachments/assets/e92553f9-446d-401a-ad43-a9ae47e774a5)

### Steps to reproduce

```
const StatusBar = observer(() => {
const isTransparent = TRANSPARENT_STATUS_BAR_SCENES.includes(rootStore.layoutStore.currentScene)
const currentScene = rootStore.layoutStore.currentScene
const insets = useSafeAreaInsets()

// // Only add padding if device has notch/Dynamic Island (top inset > 20px)
// // This works for both iOS (notch/Dynamic Island) and Android (notch)
// const hasNotch = Platform.OS === 'ios'

const content = (

)

// Don't wrap in SafeAreaView if currentScene is null (navigation not ready yet)
// This prevents double SafeAreaView padding on first render
if (currentScene === null) {
return content
}

return isTransparent ? content : (

{content}

)
})
```

### Snack or a link to a repository

https://github.com/Fundy-asia/user-app

### Safe Area Context version

^5.6.2

### React Native version

0.80.2

### Platforms

Android

### Architecture

None

### Build type

None

### Device

None

### Device model

Pixel 4

### Acknowledgements

Yes

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。