Как передать переменную из внешнего потока в Android Compose
Есть приложение на Kotlin с использованием Android Jetpack Compose. Имеются переменные:
var weather : String = ""
var main : String = ""
var wind : String = ""
var clouds : String = ""
var dt : String = ""
var sys : String = ""
var name : String = ""
var coord : String = ""
var info : String = ""
Есть поток в котором эти переменные получают значения:
class WeatherData() : AsyncTask<String, Void, String>() {
override fun doInBackground(vararg params: String?): String {
return URL("https://api.openweathermap.org/data/2.5/weather?q=$City&units=metric&appid=$ID&lang=$Lang").readText(
Charsets.UTF_8
)
}
override fun onPostExecute(DataString: String?) {
super.onPostExecute(DataString)
println(DataString)
val DataJSON = JSONObject(DataString)
weather = DataJSON.getJSONArray("weather").getJSONObject(0).getString("description").toString()
main = DataJSON.getJSONObject("main").getString("temp").toString()
wind = DataJSON.getJSONObject("wind").getString("speed").toString()
clouds = DataJSON.getJSONObject("clouds").toString()
dt = DataJSON.getInt("dt").toString()
sys = DataJSON.getJSONObject("sys").toString()
name = DataJSON.getString("name").toString()
coord = DataJSON.getJSONObject("coord").toString()
}
}
Интерфейс:
@ExperimentalGraphicsApi
@Composable
fun Greeting() {
Box(
modifier = Modifier
.background(
brush = Brush.linearGradient(
listOf(
Color.hsl(254F, 0.98F, 0.62F),
Color.hsl(215F, 0.98F, 0.53F),
Color.hsl(189F, 1F, 0.48F)
)
)
)
.fillMaxSize()
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxSize()
) {
Text(
name,
style = TextStyle(
fontSize = 25.sp,
color = Color.White,
fontFamily = FontFamily.SansSerif,
fontWeight = FontWeight.Light,
),
modifier = Modifier.padding(24.dp),
)
Text(
"$main°",
style = TextStyle(fontSize = 80.sp, color = Color.White),
modifier = Modifier.padding(0.dp, 190.dp, 0.dp, 0.dp)
)
Text("", style = TextStyle(fontSize = 20.sp, color = Color.White))
Text(
"(-19°)",
style = TextStyle(fontSize = 18.sp, color = Color.White),
modifier = Modifier.padding(0.dp, 5.dp, 0.dp, 10.dp)
)
Text(
"$weather",
style = TextStyle(fontSize = 20.sp, color = Color.White),
modifier = Modifier.padding(0.dp, 190.dp, 0.dp, 0.dp)
)
}
}
}
Как мне правильно передать в интерфейс переменные чтобы они отобразились?