#полезное
🛞 Как встроить SwiftUI в Compose Multiplatform
Обычно я стараюсь избегать использования кастомных CompositionLocal в Compose, так как это добавляет неявные зависимости, и если не предоставить значение, приложение упадёт в рантайме. Я придерживаюсь подхода, в котором CompositionLocal можно использовать только тогда, когда значение действительно может быть полезно любой Composable-функции в дереве. Яркий пример — тема приложения.
И при работе с Compose Multiplatform я подсмотрел классное применение этого механизма для встраивания SwiftUI вьюшек в Composable функции.
1⃣ В сорсете iosMain создаём CompositionLocal и интерфейс NativeViewFactory.
2⃣ На стороне Swift реализуем этот интерфейс и передаём его в функцию создания UIViewController.
3⃣ В этой функции пробрасываем фабрику через CompositionLocalProvider.
4⃣ Далее в любом месте поддерева в iosMain можно получить доступ к этой нативной вьюшке.
Посмотреть пример приложения для сканирования QR-кодов с этим подходом можно в репозитории, который я подготовил для лекции в онлайн-университете.
👉Новости 👉База вопросов
Post #291
96

- 👍 1