Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

[google_maps_flutter_android] Fixes initial padding not working while map has not been created yet. #7135

Merged
merged 9 commits into from
Feb 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
## 2.4.5

* Fixes Initial padding not working when map has not been created yet.

## 2.4.4

* Fixes Points losing precision when converting to LatLng
* Fixes Points losing precision when converting to LatLng.
* Updates minimum Flutter version to 3.0.

## 2.4.3
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ final class GoogleMapController
private boolean trafficEnabled = false;
private boolean buildingsEnabled = true;
private boolean disposed = false;
private final float density;
@VisibleForTesting final float density;
private MethodChannel.Result mapReadyResult;
private final Context context;
private final LifecycleProvider lifecycleProvider;
Expand All @@ -84,6 +84,7 @@ final class GoogleMapController
private List<Object> initialPolylines;
private List<Object> initialCircles;
private List<Map<String, ?>> initialTileOverlays;
@VisibleForTesting List<Float> initialPadding;

GoogleMapController(
int id,
Expand Down Expand Up @@ -209,6 +210,13 @@ public void onMapReady(GoogleMap googleMap) {
updateInitialPolylines();
updateInitialCircles();
updateInitialTileOverlays();
if (initialPadding != null && initialPadding.size() == 4) {
setPadding(
initialPadding.get(0),
initialPadding.get(1),
initialPadding.get(2),
initialPadding.get(3));
}
}

@Override
Expand Down Expand Up @@ -741,7 +749,22 @@ public void setPadding(float top, float left, float bottom, float right) {
(int) (top * density),
(int) (right * density),
(int) (bottom * density));
} else {
setInitialPadding(top, left, bottom, right);
}
}

@VisibleForTesting
void setInitialPadding(float top, float left, float bottom, float right) {
if (initialPadding == null) {
initialPadding = new ArrayList<>();
} else {
initialPadding.clear();
}
initialPadding.add(top);
initialPadding.add(left);
initialPadding.add(bottom);
initialPadding.add(right);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@

package io.flutter.plugins.googlemaps;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import android.content.Context;
Expand All @@ -20,6 +22,7 @@
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import java.util.HashMap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand Down Expand Up @@ -145,4 +148,22 @@ public void MethodCalledAfterControllerIsDestroyed() throws InterruptedException
argument.getValue().onMapLoaded();
verify(mapView, never()).invalidate();
}

@Test
public void OnMapReadySetsPaddingIfInitialPaddingIsThere() {
float padding = 10f;
int paddingWithDensity = (int) (padding * googleMapController.density);
googleMapController.setInitialPadding(padding, padding, padding, padding);
googleMapController.onMapReady(mockGoogleMap);
verify(mockGoogleMap, times(1))
.setPadding(paddingWithDensity, paddingWithDensity, paddingWithDensity, paddingWithDensity);
}

@Test
public void SetPaddingStoresThePaddingValuesInInInitialPaddingWhenGoogleMapIsNull() {
assertNull(googleMapController.initialPadding);
googleMapController.setPadding(0f, 0f, 0f, 0f);
assertNotNull(googleMapController.initialPadding);
Assert.assertEquals(4, googleMapController.initialPadding.size());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: google_maps_flutter_android
description: Android implementation of the google_maps_flutter plugin.
repository: https://github.com/flutter/plugins/tree/main/packages/google_maps_flutter/google_maps_flutter_android
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
version: 2.4.4
version: 2.4.5

environment:
sdk: ">=2.14.0 <3.0.0"
Expand Down