googlemaps / googlemaps/android-maps-compose
MarkerInfoWindow skips recomposition
- Dominant language
- Kotlin
- Stars
- 1.3k
- Forks
- 181
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 18
Description
#### Environment details
1. Maps-Compose v1.2.0
#### Steps to reproduce
1. Declare a state that should be updated inside a MakerInfoWindow
2. Update the state
3. MakerInfoWindow will not update
#### Code example
```kotlin
@Composable
fun MapTest() {
val empireStateBuilding = LatLng(40.7481672, -73.9859298)
var uiSettings by remember { mutableStateOf(MapUiSettings()) }
var properties by remember {
mutableStateOf(
MapProperties(mapType = MapType.SATELLITE)
)
}
var downloaded by remember { mutableStateOf(false) }
var cameraPosition = rememberCameraPositionState {
position = CameraPosition.fromLatLngZoom(empireStateBuilding, 20f)
}
Box {
GoogleMap(
modifier = Modifier.fillMaxSize(),
properties = properties,
uiSettings = uiSettings,
cameraPositionState = cameraPosition
) {
MarkerInfoWindow(
position = empireStateBuilding,
title = "Empire State Building"
) {
Card(modifier = Modifier.size(width = 200.dp, height = 200.dp)) {
Column(modifier = Modifier.fillMaxSize()) {
Text(text = it.title!!)
Text("Downloaded: $downloaded")
Box(modifier = Modifier.size(100.dp)
) {
Image(
rememberImagePainter(data = "https://www.esbnyc.com/sites/default/files/a1r4P000009TJmGQAW.jpg",
onExecute = { previous, current ->
println("[LOG] Callback")
current.state == ImagePainter.State.Empty || previous?.request != current.request
}
) {
listener(object : ImageRequest.Listener {
override fun onCancel(request: ImageRequest) {
println("[LOG] onCancel")
}
override fun onError(
request: ImageRequest,
throwable: Throwable
) {
println("[LOG] onError: $throwable")
}
override fun onStart(request: ImageRequest) {
println("[LOG] onStart")
}
override fun onSuccess(
request: ImageRequest,
metadata: ImageResult.Metadata
) {
println("[LOG] onSuccess")
println("[LOG] downloaded: $downloaded")
downloaded = true
println("[LOG] downloaded: $downloaded")
}
})
},
contentDescription = it.title,
)
}
}
}
}
}
Text(
"Downloaded: $downloaded",
style = MaterialTheme.typography.h4,
color = Color.Red
)
}
}
```
[Sample Project attached](https://github.com/googlemaps/android-maps-compose/files/8141613/SampleProject.zip)
### Screen recording of the issue
[Screen recording of the issue](https://user-images.githubusercontent.com/2534841/155727176-097b2e2a-7895-4cb6-95cb-dfa3cf39ca62.mp4)
Contributor guide
Assessment
This issue has not been assessed yet.