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

Commit 7a7e43e

Browse files
authored
[google_maps_flutter_android] Fixes initial padding not working while map has not been created yet. (#7135)
* fix initial padding not working * fix changelog * remove unused imports * removed visiblefortesting from google map * add private back * applied patch * replace 10 with padding * add line * remove line
1 parent d2fba38 commit 7a7e43e

File tree

4 files changed

+51
-3
lines changed

4 files changed

+51
-3
lines changed

packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
## 2.4.5
2+
3+
* Fixes Initial padding not working when map has not been created yet.
4+
15
## 2.4.4
26

3-
* Fixes Points losing precision when converting to LatLng
7+
* Fixes Points losing precision when converting to LatLng.
48
* Updates minimum Flutter version to 3.0.
59

610
## 2.4.3

packages/google_maps_flutter/google_maps_flutter_android/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ final class GoogleMapController
7070
private boolean trafficEnabled = false;
7171
private boolean buildingsEnabled = true;
7272
private boolean disposed = false;
73-
private final float density;
73+
@VisibleForTesting final float density;
7474
private MethodChannel.Result mapReadyResult;
7575
private final Context context;
7676
private final LifecycleProvider lifecycleProvider;
@@ -84,6 +84,7 @@ final class GoogleMapController
8484
private List<Object> initialPolylines;
8585
private List<Object> initialCircles;
8686
private List<Map<String, ?>> initialTileOverlays;
87+
@VisibleForTesting List<Float> initialPadding;
8788

8889
GoogleMapController(
8990
int id,
@@ -209,6 +210,13 @@ public void onMapReady(GoogleMap googleMap) {
209210
updateInitialPolylines();
210211
updateInitialCircles();
211212
updateInitialTileOverlays();
213+
if (initialPadding != null && initialPadding.size() == 4) {
214+
setPadding(
215+
initialPadding.get(0),
216+
initialPadding.get(1),
217+
initialPadding.get(2),
218+
initialPadding.get(3));
219+
}
212220
}
213221

214222
@Override
@@ -741,7 +749,22 @@ public void setPadding(float top, float left, float bottom, float right) {
741749
(int) (top * density),
742750
(int) (right * density),
743751
(int) (bottom * density));
752+
} else {
753+
setInitialPadding(top, left, bottom, right);
754+
}
755+
}
756+
757+
@VisibleForTesting
758+
void setInitialPadding(float top, float left, float bottom, float right) {
759+
if (initialPadding == null) {
760+
initialPadding = new ArrayList<>();
761+
} else {
762+
initialPadding.clear();
744763
}
764+
initialPadding.add(top);
765+
initialPadding.add(left);
766+
initialPadding.add(bottom);
767+
initialPadding.add(right);
745768
}
746769

747770
@Override

packages/google_maps_flutter/google_maps_flutter_android/android/src/test/java/io/flutter/plugins/googlemaps/GoogleMapControllerTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44

55
package io.flutter.plugins.googlemaps;
66

7+
import static org.junit.Assert.assertNotNull;
78
import static org.junit.Assert.assertNull;
89
import static org.junit.Assert.assertTrue;
910
import static org.mockito.Mockito.mock;
1011
import static org.mockito.Mockito.never;
12+
import static org.mockito.Mockito.times;
1113
import static org.mockito.Mockito.verify;
1214

1315
import android.content.Context;
@@ -20,6 +22,7 @@
2022
import io.flutter.plugin.common.MethodCall;
2123
import io.flutter.plugin.common.MethodChannel;
2224
import java.util.HashMap;
25+
import org.junit.Assert;
2326
import org.junit.Before;
2427
import org.junit.Test;
2528
import org.junit.runner.RunWith;
@@ -145,4 +148,22 @@ public void MethodCalledAfterControllerIsDestroyed() throws InterruptedException
145148
argument.getValue().onMapLoaded();
146149
verify(mapView, never()).invalidate();
147150
}
151+
152+
@Test
153+
public void OnMapReadySetsPaddingIfInitialPaddingIsThere() {
154+
float padding = 10f;
155+
int paddingWithDensity = (int) (padding * googleMapController.density);
156+
googleMapController.setInitialPadding(padding, padding, padding, padding);
157+
googleMapController.onMapReady(mockGoogleMap);
158+
verify(mockGoogleMap, times(1))
159+
.setPadding(paddingWithDensity, paddingWithDensity, paddingWithDensity, paddingWithDensity);
160+
}
161+
162+
@Test
163+
public void SetPaddingStoresThePaddingValuesInInInitialPaddingWhenGoogleMapIsNull() {
164+
assertNull(googleMapController.initialPadding);
165+
googleMapController.setPadding(0f, 0f, 0f, 0f);
166+
assertNotNull(googleMapController.initialPadding);
167+
Assert.assertEquals(4, googleMapController.initialPadding.size());
168+
}
148169
}

packages/google_maps_flutter/google_maps_flutter_android/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: google_maps_flutter_android
22
description: Android implementation of the google_maps_flutter plugin.
33
repository: https://github.com/flutter/plugins/tree/main/packages/google_maps_flutter/google_maps_flutter_android
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
5-
version: 2.4.4
5+
version: 2.4.5
66

77
environment:
88
sdk: ">=2.14.0 <3.0.0"

0 commit comments

Comments
 (0)