我目前正在尝试 Android Compose。我有一段显示加密货币价格的文本。如果价格上涨,文本的颜色应为绿色,但如果价格下降,文本的颜色应为红色。当用户单击按钮时调用该函数。问题是该函数showPrice()被调用多次(有时只调用一次,有时 2-4 次)。因此,用户可能会看到错误的颜色。我该怎么做才能确保它只被调用一次?
主要活动:
@Composable
fun MainScreen() {
val priceLiveData by viewModel.trackLiveData.observeAsState()
val price = priceLiveData ?: return
when (price) {
is ViewState.Response -> showPrice(price = price.data)
is ViewState.Error -> showError(price.text)
}
Button(onClick = {viewModel.post()} )
}
@Composable
private fun showPrice(price: Double) {
lastPrice = sharedPref.getFloat("eth", 0f).toDouble()
val color by animateColorAsState(if (price >= (lastPrice)) Color.Green else
Color.Red)
Log.v("TAG", "last=$lastPrice new = $price")
editor.putFloat("eth", price.toFloat()).apply()
Text(
text = price.toString(),
color = color,
fontSize = 28.sp,
fontFamily = …Run Code Online (Sandbox Code Playgroud) 我尝试过./gradlew build,但没有成功,因为它看不到 gradle 文件中所做的更改。唯一对我有用的是重新启动并使缓存无效,但必须有更好的方法来做到这一点。
谢谢