Google переписал гайды Modular with Hilt и Modular with Koin: каждый feature-модуль теперь регистрирует не только свои экраны, но и сопоставитель (matcher) для диплинка. Вот как это делает модуль профиля в варианте с Hilt:
@IntoSet
@Provides
fun provideDeepLinkMatcher(): BackStackMatcher<*, NavKey> =
UriDeepLinkMatcher(
uriPattern = DeepLinkUri(PROFILE_URI),
serializer = Profile.serializer(),
).withBackStack { matchResult ->
listOf(ConversationList, matchResult.key)
}
Navigator.handleDeepLink(intent) в модуле common перебирает все такие сопоставители и по URI собирает искусственный стек экранов, а для обычного запуска и запуска по диплинку в примерах заведены отдельные Activity. Так фичу можно открыть по ссылке, не зная, как устроена навигация в соседних модулях.🔗 Hilt · Koin
#Compose #Navigation3 #AndroidDev