googlemaps / googlemaps/android-maps-compose

MarkerInfoWindow skips recomposition

Open
#46 8 comments 1 reaction 1 assignee Assigned to @kikoso View on GitHub
priority: p2 type: bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.