我使用 MarkerComposable 创建了自己的标记,因为我想在单击图标时添加动画。我希望单击时所选标记变大。我可以想到两种选择:要么将图像更改为更大的图像(我选择了这个),要么使用修改器。但令我惊讶的是,当我运行代码时,我发现只有 MarkerComposable 被重构,而 Image 没有被重构。无论我点击标记多少次,图像都不会改变。
我尝试过更改一些内容,但无法重新组合图像可组合项。而且我还没有找到太多关于 MarkerComposable 的文档。
您知道是什么原因造成的吗?或者当我点击标记时有什么替代方法可以改变它?
提前谢谢您!
@Composable
private fun MyMarker(
location: Location,
onPinClick: () -> Unit,
) {
val markerState = rememberMarkerState(
position = location.toLatLng(),
)
var iconSelected by rememberSaveable { mutableStateOf(false) }
MarkerComposable(
state = markerState,
title = if (iconSelected) "true" else "false", // recompose
onClick = { _ ->
iconSelected = !iconSelected
false
},
)
{
Image(
painter = painterResource( // not recompose
if (iconSelected) {
R.drawable.low_availability_selected_pin
} else {
R.drawable.high_availability_fav_pin
},
),
contentDescription = null,
}
}
刚刚发现需要设置MarkerComposable的keys参数,不然不会重新渲染
MarkerComposable(
keys = <THIS NEEDS TO CHANGE TO RE-RENDER>
state = markerState,
title = if (iconSelected) "true" else "false", // recompose
onClick = { _ ->
iconSelected = !iconSelected
false
},
)