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

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

オープン
#682 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
TypeScript
スター
2.8k
フォーク
258
平均マージ
3日 1時間
マージ済み PR(30日)
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 を短くまとめたダイジェスト。