fix: optimize status bar color handling in ProfilePhotoPicker for better performance
This commit is contained in:
@@ -183,24 +183,24 @@ fun ProfilePhotoPicker(
|
|||||||
|
|
||||||
// 🎨 Затемнение статус бара когда галерея открыта
|
// 🎨 Затемнение статус бара когда галерея открыта
|
||||||
val view = LocalView.current
|
val view = LocalView.current
|
||||||
DisposableEffect(shouldShow, scrimAlpha) {
|
val window = remember { (view.context as? android.app.Activity)?.window }
|
||||||
if (shouldShow && !view.isInEditMode) {
|
val originalStatusBarColor = remember { window?.statusBarColor ?: 0 }
|
||||||
val window = (view.context as? android.app.Activity)?.window
|
|
||||||
val originalStatusBarColor = window?.statusBarColor ?: 0
|
|
||||||
|
|
||||||
// Затемняем статус бар
|
// Обновляем цвет статус бара при изменении scrimAlpha
|
||||||
|
LaunchedEffect(scrimAlpha) {
|
||||||
|
if (window != null && !view.isInEditMode) {
|
||||||
val scrimColor = android.graphics.Color.argb(
|
val scrimColor = android.graphics.Color.argb(
|
||||||
(scrimAlpha * 255).toInt().coerceIn(0, 255),
|
(scrimAlpha * 255).toInt().coerceIn(0, 255),
|
||||||
0, 0, 0
|
0, 0, 0
|
||||||
)
|
)
|
||||||
window?.statusBarColor = scrimColor
|
window.statusBarColor = scrimColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onDispose {
|
// Восстанавливаем оригинальный цвет при закрытии
|
||||||
// Восстанавливаем оригинальный цвет
|
DisposableEffect(Unit) {
|
||||||
window?.statusBarColor = originalStatusBarColor
|
onDispose {
|
||||||
}
|
window?.statusBarColor = originalStatusBarColor
|
||||||
} else {
|
|
||||||
onDispose { }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user