Навигация по Jetpack: как обновить ViewModel при закрытии диалогового окна?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Навигация по Jetpack: как обновить ViewModel при закрытии диалогового окна?

Сообщение Anonymous »

Я работаю над простым приложением SoundBoard, чтобы познакомиться с Jetpack Compose и Navigation. Я новичок в обеих технологиях и борюсь с этим:
Основное представление в приложении представляет собой сеточное представление всех звуков, хранящихся в базе данных SQLite. Пользователи могут редактировать звук, чтобы изменить его имя в диалоговом окне. Когда диалоговое окно редактирования закрыто, я хочу обновить сетку, но не нашел способа, как это реализовать идеально.
Изображение
Изображение
На данный момент у меня есть следующие пункты назначения:

Код: Выделить всё

object Destinations {
@Serializable
object SoundGrid

@Serializable
class SoundEdit(val soundId: Int)
}
И используйте их следующим образом:

Код: Выделить всё

@Composable
fun SoundBoardApp(navController: NavHostController = rememberNavController()) {
NavHost(navController = navController, startDestination = SoundGrid) {
composable {
SoundGrid(
onNavigateToSoundEdit = {
navController.navigate(SoundEdit(it.id))
})
}

dialog {
SoundEditDialog(onClose = {
navController.navigateUp()
})
}
}
}

@Composable
fun SoundGrid(
onNavigateToSoundEdit: (Sound) -> Unit,
modifier: Modifier = Modifier,
viewModel: SoundGridViewModel = koinViewModel(),
) { .. }

@Composable
fun SoundEditDialog(
onClose: () -> Unit,
viewModel: SoundEditViewModel = koinViewModel()
) { .. }
Как я могу указать ViewModel составного SoundGrid обновлять данные при закрытии диалогового окна? Каков идеальный способ реализации этой функциональности?

Подробнее здесь: https://stackoverflow.com/questions/791 ... alog-close
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»