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

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

Đang mở
#682 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
2.8k
Fork
258
Merge trung bình
3 ngày 1 giờ
Pull request đã merge (30 ngày)
2

Mô tả

### 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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.