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 вызывается только один раз.

Что я делаю не так? Я что-нибудь пропустил? Заранее спасибо.

0 ответов

Другие вопросы по тегам