Android Kotlin Jetpack Compose — проблема с состоянием базы данных комнатыAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Kotlin Jetpack Compose — проблема с состоянием базы данных комнаты

Сообщение Anonymous »

Я реализовал базу данных комнаты, и теперь у меня возникла проблема с моим состоянием:
My ViewModel

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

companion object{
private const val MILLS = 5_000L
}

val allWorkingDaysState : StateFlow = repository.getAllWorkingDays()
.map { WorkingDayState(it) }
.onEach {
println("All Working Days: $it")
}
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(MILLS),
initialValue = WorkingDayState()
)

fun upsertWorkingDay(workingDay: WorkingDay) {
viewModelScope.launch {
repository.upsertWorkingDay(workingDay)
}
}
Мой @Composable

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

 val workingDays by viewModelWorkingDays.allWorkingDaysState.collectAsState()
LaunchedEffect(key1 = workingDays) {
Log.d("workingDays", workingDays.toString())
}
Проблема теперь следующая:
Когда я вызываю upsertWorkingDay и меняю некоторые значения. Значения сохраняются в БД. allWorkingDaysState также создает новое состояние. Распечатывается вход в систему .onEach.
Но вот тут-то и начинается проблема. Мой LaunchedEffect не срабатывает.
Другое дело. Когда я меняю значение в БД напрямую с помощью «Проверки приложений» в Android Studio, allWorkingDaysState также выдает новое значение. Печатается вход в систему .onEach.
Но также срабатывает мой LaunchedEffect.
В чем разница. Что я делаю неправильно? Надеюсь, вы мне поможете.
Я пробовал много сообщений журнала. Но ничто не помогло мне найти проблему.
Я ожидаю, что мой LaunchedEffect также сработает, если allWorkingDaysState выдаст новое значение после upsertWorkingDay.

Подробнее здесь: https://stackoverflow.com/questions/789 ... te-problem
Ответить

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

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

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

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

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