Skip to content

Commit

Permalink
[google_maps_flutter_android] Convert PlatformPolyline.pattern to P…
Browse files Browse the repository at this point in the history
…igeon (#7631)

Creates a structured `PlatformPatternItem` pigeon class to use in
`PlatformPolyline`.

flutter/flutter#154738

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] page, which explains my
responsibilities.
- [x] I read and followed the [relevant style guides] and ran the
auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages
repo does use `dart format`.)
- [ ] I signed the [CLA].
- [x] The title of the PR starts with the name of the package surrounded
by square brackets, e.g. `[shared_preferences]`
- [x] I [linked to at least one issue that this PR fixes] in the
description above.
- [x] I updated `pubspec.yaml` with an appropriate new version according
to the [pub versioning philosophy], or this PR is [exempt from version
changes].
- [x] I updated `CHANGELOG.md` to add a description of the change,
[following repository CHANGELOG style], or this PR is [exempt from
CHANGELOG changes].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/packages/blob/main/CONTRIBUTING.md
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md
[relevant style guides]:
https://github.com/flutter/packages/blob/main/CONTRIBUTING.md#style
[CLA]: https://cla.developers.google.com/
[Discord]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
[linked to at least one issue that this PR fixes]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview
[pub versioning philosophy]: https://dart.dev/tools/pub/versioning
[exempt from version changes]:
https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#version
[following repository CHANGELOG style]:
https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changelog-style
[exempt from CHANGELOG changes]:
https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changelog
[test-exempt]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#tests
  • Loading branch information
yaakovschectman authored Sep 23, 2024
1 parent a717b0e commit 24594a0
Show file tree
Hide file tree
Showing 8 changed files with 366 additions and 160 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 2.14.7

* Adds `PlatformPatternItem` pigeon class to convert `PlatformPolyline.pattern`.

## 2.14.6

* Converts 'PlatformCameraUpdate' to pigeon.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,7 @@ static String interpretPolylineOptions(
sink.setWidth(polyline.getWidth());
sink.setZIndex(polyline.getZIndex());
sink.setPoints(pointsFromPigeon(polyline.getPoints()));
sink.setPattern(toPattern(polyline.getPatterns()));
sink.setPattern(patternFromPigeon(polyline.getPatterns()));
return polyline.getPolylineId();
}

Expand Down Expand Up @@ -850,32 +850,27 @@ private static List<List<LatLng>> toHoles(List<List<Messages.PlatformLatLng>> da
return holes;
}

private static List<PatternItem> toPattern(Object o) {
final List<?> data = toList(o);

if (data.isEmpty()) {
private static List<PatternItem> patternFromPigeon(
List<Messages.PlatformPatternItem> patternItems) {
if (patternItems.isEmpty()) {
return null;
}

final List<PatternItem> pattern = new ArrayList<>(data.size());

for (Object ob : data) {
final List<?> patternItem = toList(ob);
switch (toString(patternItem.get(0))) {
case "dot":
final List<PatternItem> pattern = new ArrayList<>();
for (Messages.PlatformPatternItem patternItem : patternItems) {
switch (patternItem.getType()) {
case DOT:
pattern.add(new Dot());
break;
case "dash":
pattern.add(new Dash(toFloat(patternItem.get(1))));
case DASH:
assert patternItem.getLength() != null;
pattern.add(new Dash(patternItem.getLength().floatValue()));
break;
case "gap":
pattern.add(new Gap(toFloat(patternItem.get(1))));
case GAP:
assert patternItem.getLength() != null;
pattern.add(new Gap(patternItem.getLength().floatValue()));
break;
default:
throw new IllegalArgumentException("Cannot interpret " + pattern + " as PatternItem");
}
}

return pattern;
}

Expand Down
Loading

0 comments on commit 24594a0

Please sign in to comment.