Android, Jetpack Compose — компонуемая функция не обновляется
Я новичок в создании Android Jetpack. Все, что я хочу сделать, это обновить данные в пользовательском интерфейсе, когда они будут получены из API. Вот моя составная функция:
@Composable
fun getCurrentWeather(lat : Double, long : Double, nc : NavHostController,
vm: CurrentConditionsViewModel = hiltViewModel()) {
vm.getWeather(lat = lat, long = long)
var check by remember { mutableStateOf("") }
var text by remember { mutableStateOf("") }
val state = vm._state.value
when (state) {
is Resource.Loading -> {
CircularProgressIndicator(
modifier = Modifier
.fillMaxSize()
.wrapContentSize(align = Alignment.Center)
)
check = "hi"
}
is Resource.Success -> {
for (i in state.data!!.weather) {
print("called")
}
state.data.name.let {
text = it.toString()
}
}
is Resource.Error -> {
Log.d("StateError", state.message.toString())
}
}
}
А вот моя ViewModel:
@HiltViewModel
class CurrentConditionsViewModel @Inject constructor(private val weatherRepository: WeatherRepositoryImpl) :
ViewModel() {
val _state: MutableState<Resource<CurrentConditionsDataModel>?> = mutableStateOf(null)
fun getWeather(lat : Double, long : Double) {
viewModelScope.launch {
weatherRepository.getWeather(latt = lat, longg = long).collect {
_state.value = it
}
}
}
}
Все идет хорошо, но единственная проблема заключается в том, что функция Composable не вызывается, переменная состояния обновляется в модели представления. Я пытался использовать и другие переменные, такие как проверка и текст, но Composable вызывается только один раз.
Что я делаю не так? Я что-нибудь пропустил? Заранее спасибо.