Все о Jetpack Compose и Compose Multiplatform
По сотрудничеству - @ab_manager
Post #949
3.65K
This post (sticker, poll or similar) has no web preview. Open in Telegram
CO @compose_broadcast
Showing posts older than #950 · Back to latest
This post (sticker, poll or similar) has no web preview. Open in Telegram
implementation(platform("androidx.compose:compose-bom:2026.08.00"))compileSdk = 37 и AGP 9.2.0+.This post (sticker, poll or similar) has no web preview. Open in Telegram

This post (sticker, poll or similar) has no web preview. Open in Telegram
Forwarded from Kotlin Multiplatform Broadcast

stable, в 2.4.0 иногда определялись как runtime/Uncertain. 
entry<> с флагом в metadata и вручную разруливать, что рисовать через ModalBottomSheetLayout, а что через NavDisplay:val NavEntry<out NavKey>.isBottomSheet: Boolean
get() = metadata["isBottomSheet"] as? Boolean == true
NavDisplay(
entries = navigationState.toEntries(mainEntryProvider)
.filter { it.isBottomSheet.not() },
onBack = { navigator.goBack() },
)
SceneStrategy, а не переоткрывай этот велосипед. ⚠️ И отдельный подвох: шторка часть стека, и если перед переходом на следующий экран не закрыть её руками, back вернёт её обратно. Легко забыть.@Serializable. Автор прокинула entryPoint: NavKey (чтобы при блокировке юзера возвращать на нужный экран через несколько назад), а сам NavKey сериализуемым не был:Fatal Exception: kotlinx.serialization.SerializationException
SnapshotStateList<NavKey>, которым управляешь сам. Адаптивные Scene-API, нативные iOS-жесты, browser history на Web из коробки.androidx.compose.ui.tooling.preview.Preview теперь работает в commonMain. Прошлые аннотации deprecated.placedAsOverlay для нативных Liquid Glass-компонентов, полноценный нативный ввод с magnifier / translate / autofill / кастомными IME.HTMLElementView для HTML прямо в Composition, VoiceOver через семантику, Coil на web workers.
2.0.0-alpha02 с таргетами Android, iOS, JVM/Desktop и WASM. Живая демка работает прямо в браузере без установки.State, Intent на каждое действие, Reducer с (State, Intent) → State. После этого undo/redo - это стек из State, JSON-сериализация практически бесплатна, и логика платформ физически не может разъехаться.remember-состояние сохраняются.rememberSaveable и ViewModel, в крайнем случае рестартит Activity. Полный rebuild нужен только при изменении сигнатур функций, иерархии классов и inline-функций.2.0.0-beta01:[plugins]
hotswan-compiler = { id = "com.github.skydoves.compose.hotswan.compiler", version = "2.0.0-beta01" }

expect/actual и тремя платформенными бэкендами. Kamera (бывшая CameraK) закрывает это одним Compose-first слоем: один @Composable-вход, под капотом CameraX на Android, AVFoundation на iOS и JavaCV на Desktop.rememberCameraKState(), получаешь StateFlow<CameraKState> c ветками Initializing, Ready(controller, uiState) и Error, и рисуешь превью, когда камера готова:val cameraState by rememberCameraKState(
config = CameraConfiguration(
cameraLens = CameraLens.BACK,
aspectRatio = AspectRatio.RATIO_16_9,
),
)
when (val state = cameraState) {
is CameraKState.Ready -> CameraPreviewView(state.controller)
is CameraKState.Initializing -> CircularProgressIndicator()
is CameraKState.Error -> Text(state.message)
}
takePictureToFile() для прямого сохранения в файл. Сверху плагины, которые сами активируются на Ready: сохранение фото, QR/штрихкоды, OCR, запись видео с pause/resume и лимитом длительности, анализ кадров через analyzer.MemoryManager, хотя превью выглядело нормально. На Android фото оказывалось кропом вместо настроенного аспекта, теперь что видишь, то и снимаешь. Плюс вычистили утечки корутин в плагинах при ре-ините камеры.
ESTIMATED (только статика), с live heatmap — MEASURED (ложные тревоги уходят вниз в рейтинге). Фиксы применяются двойным кликом с предпросмотром.@TraceRecomposition функциям, то есть видел не весь модуль. Trace-all инструментирует всё:composeStabilityAnalyzer {
traceAll {
enabled.set(true)
threshold.set(2)
variants.set(listOf("debug"))
}
}@NavDestination, @NavEdge, @NavGraphRoot, KSP статически собирает граф, а IDE-плагин рисует карту: каждый экран отрендеренной @Preview-миниатюрой через Layoutlib, без эмулятора. Переходы стрелками, двойной клик прыгает в исходник, граф мёржится по всем модулям. Канвас редактируемый — тянешь связь от экрана к экрану, и плагин сам вписывает @NavEdge в код..nav baseline по аналогии с apiDump/apiCheck: navCheck валит сборку, когда граф разъезжается с закоммиченным базелайном.
Forwarded from Aurora Developers


Хотите помочь проекту стать лучше? Присоединяйтесь к разработке на mos.hub. Мы открыты к вашему коду и экспертизе. Вместе мы сможем сделать инструмент максимально полезным для всего сообщества.
Ссылка на репозиторий
Forwarded from Android Broadcast
