Когда я редактирую или удаляю профиль, Запускается LaunchedEffect, и журналы подтверждают, что получен обновленный список профилей. Однако когда я добавляю новый профиль, LaunchedEffect не срабатывает.
просмотреть код модели:
Код: Выделить всё
private val _profiles = MutableStateFlow(emptyList())
val profiles: StateFlow = _profiles
init {
fetchProfiles()
}
fun fetchProfiles() {
viewModelScope.launch {
val currentProfiles = database.loginProfileDao().getAllProfiles()
_profiles.value = currentProfiles
Log.d("Profile_Test", "Profiles fetched from DB: $_profiles")
}
}
fun saveProfileToDatabase(profile: LoginProfile) {
viewModelScope.launch {
database.loginProfileDao().insertProfile(profile)
fetchProfiles()
}
}
Код: Выделить всё
@Composable
fun ProfileDropdown(loginViewModel: LoginViewModel) {
var expanded by remember { mutableStateOf(false) }
var selectedItem by remember { mutableStateOf(null) }
val profiles = loginViewModel.profiles.collectAsState().value
LaunchedEffect(profiles) {
Log.d("Profile_Test", "Launched Effect: $profiles")
if (profiles.isNotEmpty() && selectedItem != profiles.last()) {
selectedItem = profiles.last()
loginViewModel.selectedProfile.value = profiles.last()
} else if (profiles.isEmpty()) {
selectedItem = null
loginViewModel.selectedProfile.value = null
}
}
ExposedDropdownMenuBox(
expanded = expanded,
onExpandedChange = { expanded = !expanded }
) {
OutlinedTextField(
value = selectedItem?.name ?: "Select Profile",
onValueChange = {},
readOnly = true,
trailingIcon = {
ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded)
}
)
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false }
) {
profiles.forEach { profile ->
DropdownMenuItem(
text = { Text(profile.name) },
onClick = {
selectedItem = profile
loginViewModel.selectedProfile.value = profile
expanded = false
}
)
}
}
}
}
Буду очень признателен за любую помощь или рекомендации! Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... ck-compose
Мобильная версия