Forwarded from Android Broadcast (Кирилл Розов)
Руководство (EN, 4 мин) как использовать Jetpack Compose Navigation и Dagger 2 с отложенной (ленивой) инициализацией модулей
#compose #dagger #navigation
#compose #dagger #navigation
👍15👎1
Новая библиотека для навигации в Compose - Nibel. Библиотека не базируется на магических строках, а всё строго типизировано и можно переходить от Fragment в Compоsable и обратно
📝 Статья с обзором библиотеки (10 мин)
#navigation #android
📝 Статья с обзором библиотеки (10 мин)
#navigation #android
👍45👎7
Forwarded from Mobile Compose
#Video #Compose #Navigation
Декларативная архитектура и навигация с Decompose
Доклад c весеннего сезона Mobius 2023 от Алексея Панова, в котором он рассказывает про декларативную архитектуру и навигацию, а также на реальном примере показывает, как всё это интегрировать в проект с помощью библиотеки Decompose.
Декларативная архитектура и навигация с Decompose
Доклад c весеннего сезона Mobius 2023 от Алексея Панова, в котором он рассказывает про декларативную архитектуру и навигацию, а также на реальном примере показывает, как всё это интегрировать в проект с помощью библиотеки Decompose.
YouTube
Алексей Панов, Контур — Декларативная архитектура и навигация с Decompose
Подробнее о конференции Mobius: https://jrg.su/ojGU3B
— —
В современных мобильных приложениях декларативный подход все чаще вытесняет императивный. Вы, наверняка, слышали о плюсах использования однонаправленного потока данных или о преимуществах декларативных…
— —
В современных мобильных приложениях декларативный подход все чаще вытесняет императивный. Вы, наверняка, слышали о плюсах использования однонаправленного потока данных или о преимуществах декларативных…
👍19
В Navigation 2.8.0-alpha05 начали работу над type safe аргументами навигации на основе KotlinX Serialization
#navigation @compose_broadcast
#navigation @compose_broadcast
🏆37👍13❤3👏1
Forwarded from Android Broadcast
🛠 Значительные переработки под капотом для улучшения поддержки KMP
👉 Добавлена поддержка обработки deep link из Kotlin Common кода
👉 Улучшения API
#jetpack #jetpackupdate #navigation #compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Forwarded from Android Broadcast
Media is too big
VIEW IN TELEGRAM
Месяц назад Google анонсировала навигацию специально разработанную под Compose и которая должна решить все боли. В видео показываю её возможности, делюсь своим мнение и рассказываю про недочеты, которые надеюсь что решат до стабильного релиза
#AndroidBroadcast #navigation #jetpack #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33❤3🤔2
🔥 Jetpack Navigation 3 теперь мультиплатформенная!
В релизе 1.0.0-alpha08 добавили поддержку множества новых KMP-таргетов для runtime-артефакта. Теперь библиотека работает на:
👉 JVM → Android и Desktop
👉 Native → Linux, iOS, watchOS, macOS, MinGW
👉 Web → JavaScript и WasmJS
Для UI-артефакта (где лежат Composable-функции) пока поддержка осталась только у Jetpack Compose.
Ждём появления отдельного артефакта для⚙️ Compose Multiplatform от JetBrains
#compose #kmp #navigation
В релизе 1.0.0-alpha08 добавили поддержку множества новых KMP-таргетов для runtime-артефакта. Теперь библиотека работает на:
👉 JVM → Android и Desktop
👉 Native → Linux, iOS, watchOS, macOS, MinGW
👉 Web → JavaScript и WasmJS
Для UI-артефакта (где лежат Composable-функции) пока поддержка осталась только у Jetpack Compose.
Ждём появления отдельного артефакта для
#compose #kmp #navigation
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥47👍8🤔5❤1
Navigation3 - это новая библиотека навигации, которую писали под Compose. В центре - состояние Backstack в core библиотеке, а дополнительно написаное удобное API для использования в Compose UI.
Я уже делал подробный
#compose #navigation
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42🤔3👍2❤1
Да, у нас уже есть Jetpack Navigation 3 с официальной поддержкой KMP. Тем не менее авторы Kompass смотрят на проблему иначе, и идея тут любопытная.
Суть в том, что вся навигация строится на чистых редукторах. Любой переход — это
State + Command → State, без побочных эффектов. Вот как это выглядит в коде:// Граф описывает, какие экраны в нём живут и как рендерятся
class MainNavigationGraph : NavigationGraph {
override fun canResolveDestination(id: String) =
id in setOf("home", "profile")
@Composable
override fun Content(entry: BackStackEntry, destination: Destination, navController: NavController) {
when (destination) {
is MainDestination.Home -> HomeScreen(navController)
is MainDestination.Profile -> ProfileScreen(navController)
}
}
}
// Хост принимает список графов и рендерит текущий экран
@Composable
fun AppNavigation() {
val navController = rememberNavController(
startDestination = MainDestination.Home
)
KompassNavigationHost(
navController = navController,
graphs = persistentListOf(MainNavigationGraph())
)
}
// Навигация из экрана
navController.navigate(
entry = BackStackEntry(destinationId = "profile", scopeId = newScope())
)
// Возврат с результатом
navController.pop(result = ProfileResult(userId = "123"))
NavigationState и BackStackEntry иммутабельны, поэтому всю навигацию можно покрыть обычными unit-тестами без инструментации: создаёшь NavigationHandler, кидаешь команду, проверяешь стейт.Особенности:
👉 Таргеты — Android, iOS, Desktop (JVM).
👉 Scopes вместо ViewModel.
rememberScoped<T> живёт ровно пока BackStackEntry в стеке, автоматически чистится при pop.👉 Multi-graph. Несколько независимых графов с собственными лейаутами. Из коробки есть поддержка master-detail для планшетов.
👉 Дип-линки. Через
DeepLinkHandler — типизированный парсинг URI в NavigationCommand.🛠 Библиотека ещё в активной разработке
#KMP #ComposeMultiplatform #Navigation #Kotlin #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👎30👍9