TGViewer
Mobile Compose Mobile Compose @mobile_compose · 2.96K subscribers
Post #374 3.37K

Forwarded from Kotlin Adept Notes (Alex Panov)

Как встроить SwiftUI в Compose Multiplatform

Обычно я стараюсь избегать использования кастомных CompositionLocal в Compose, так как это добавляет неявные зависимости, и если не предоставить значение, приложение упадёт в рантайме. Я придерживаюсь подхода, в котором CompositionLocal можно использовать только тогда, когда значение действительно может быть полезно любой Composable-функции в дереве. Яркий пример — тема приложения.

И при работе с Compose Multiplatform я подсмотрел классное применение этого механизма для встраивания SwiftUI вьюшек в Composable функции.

1. В сорсете iosMain создаём CompositionLocal и интерфейс NativeViewFactory.
2. На стороне Swift реализуем этот интерфейс и передаём его в функцию создания UIViewController.
3. В этой функции пробрасываем фабрику через CompositionLocalProvider.
4. Далее в любом месте поддерева в iosMain можно получить доступ к этой нативной вьюшке.

🌐 Посмотреть пример приложения для сканирования QR-кодов с этим подходом можно в репозитории, который я подготовил для лекции в онлайн-университете.

#Compose #SwiftUI
  • 👍 11
  • ❤ 8
  • ❤‍🔥 2
  • 👎 1
More from @mobile_compose
  1. Sep 23, 2026⚡️⚡️AI-агент съел токены и потерял контекст. Что делать? Разберемся на Mobius 2026 Autumn.…
  2. Sep 22, 2026#Release #Compose #Changelog 😇 Релиз Compose библиотек (09.09.2026) 🔵 Animation 1.12.1/1…
  3. Aug 28, 2026#Release #Compose #Changelog 😇 Релиз Compose библиотек (26.08.2026) 🔵 Animation 1.13.0-a…
  4. Aug 25, 2026#Article #Habr #UI #Compose 🎨 Почему баннер Yandex Ads мигает в LazyColumn — и при чём зд…
  5. May 25, 2026#Release #Compose #Changelog 😇 Релиз Compose библиотек (19.05.2026) 🔵 Animation 1.11.2/1…
  6. May 19, 2026🎨 Король умер — да здравствует король! Google официально объявила о переходе к стратегии…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →