Skip to content

Commit 258a1e8

Browse files
committed
[google_maps_flutter] Refactor JS bridge and verify integration tests based on upstream v2.17.0
1 parent 158dc46 commit 258a1e8

16 files changed

Lines changed: 715 additions & 256 deletions

packages/google_maps_flutter/lib/google_maps_flutter_tizen.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ library google_maps_flutter_tizen;
77

88
import 'dart:async';
99
import 'dart:convert';
10-
import 'dart:io';
1110
import 'dart:ui' as ui;
1211

1312
import 'package:flutter/foundation.dart';
@@ -19,6 +18,7 @@ import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platf
1918
import 'package:stream_transform/stream_transform.dart';
2019
import 'package:webview_flutter/webview_flutter.dart';
2120

21+
import 'src/google_maps_js_bridge.dart';
2222
import 'src/util.dart' as util;
2323

2424
part 'src/circle.dart';

packages/google_maps_flutter/lib/src/circle.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ class CircleController {
1212
required util.GCircle circle,
1313
bool consumeTapEvents = false,
1414
ui.VoidCallback? onTap,
15-
WebViewController? controller,
15+
required GoogleMapsJsBridge bridge,
1616
}) : _circle = circle,
1717
_consumeTapEvents = consumeTapEvents,
1818
tapEvent = onTap {
19-
_addCircleEvent(controller);
19+
_addCircleEvent(bridge);
2020
}
2121

2222
util.GCircle? _circle;
@@ -25,10 +25,10 @@ class CircleController {
2525
/// Circle component's tap event.
2626
ui.VoidCallback? tapEvent;
2727

28-
Future<void> _addCircleEvent(WebViewController? controller) async {
28+
Future<void> _addCircleEvent(GoogleMapsJsBridge bridge) async {
2929
final String command =
3030
"$_circle.addListener('click', (event) => CircleClick.postMessage(JSON.stringify(${_circle?.id})));";
31-
await controller!.runJavaScript(command);
31+
await bridge.runJavaScript(command);
3232
}
3333

3434
/// Returns `true` if this Controller will use its own `onTap` handler to consume events.

packages/google_maps_flutter/lib/src/circles.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ part of '../google_maps_flutter_tizen.dart';
88
/// This class manages all the [CircleController]s associated to a [GoogleMapController].
99
class CirclesController extends GeometryController {
1010
/// Initialize the cache. The [StreamController] comes from the [GoogleMapController], and is shared with other controllers.
11-
CirclesController({required StreamController<MapEvent<Object?>> stream})
12-
: _streamController = stream,
11+
CirclesController({
12+
required StreamController<MapEvent<Object?>> stream,
13+
required GoogleMapsJsBridge bridge,
14+
}) : _streamController = stream,
15+
_bridge = bridge,
1316
_circleIdToController = <CircleId, CircleController>{},
1417
_idToCircleId = <int, CircleId>{};
1518

@@ -20,6 +23,8 @@ class CirclesController extends GeometryController {
2023
// The stream over which circles broadcast their events
2124
final StreamController<MapEvent<Object?>> _streamController;
2225

26+
final GoogleMapsJsBridge _bridge;
27+
2328
/// Adds a set of [Circle] objects to the cache.
2429
///
2530
/// Wraps each [Circle] into its corresponding [CircleController].
@@ -35,14 +40,14 @@ class CirclesController extends GeometryController {
3540
final util.GCircleOptions populationOptions = _circleOptionsFromCircle(
3641
circle,
3742
);
38-
final util.GCircle gCircle = util.GCircle(populationOptions);
43+
final util.GCircle gCircle = util.GCircle(_bridge, populationOptions);
3944
final CircleController controller = CircleController(
4045
circle: gCircle,
4146
consumeTapEvents: circle.consumeTapEvents,
4247
onTap: () {
4348
_onCircleTap(circle.circleId);
4449
},
45-
controller: util.webController,
50+
bridge: _bridge,
4651
);
4752
_idToCircleId[gCircle.id] = circle.circleId;
4853
_circleIdToController[circle.circleId] = controller;

0 commit comments

Comments
 (0)