Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Next Next commit
MapEvent<dynamic> -> MapEvent<Object?> is better
  • Loading branch information
ditman committed May 19, 2022
commit 51c99bc0d0f2b10e8ba5f5ff2d6c2f5d9054bc39
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ void main() {
group('GoogleMapController', () {
const int mapId = 33930;
late GoogleMapController controller;
late StreamController<MapEvent<Object>> stream;
late StreamController<MapEvent<Object?>> stream;

// Creates a controller with the default mapId and stream controller, and any `options` needed.
GoogleMapController _createController({
Expand All @@ -59,7 +59,7 @@ void main() {
}

setUp(() {
stream = StreamController<MapEvent<Object>>.broadcast();
stream = StreamController<MapEvent<Object?>>.broadcast();
});

group('construct/dispose', () {
Expand Down Expand Up @@ -219,7 +219,7 @@ void main() {
controller.init();

// Trigger events on the map, and verify they've been broadcast to the stream
final Stream<MapEvent<Object>> capturedEvents = stream.stream.take(5);
final Stream<MapEvent<Object?>> capturedEvents = stream.stream.take(5);

gmaps.Event.trigger(
map, 'click', <Object>[gmaps.MapMouseEvent()..latLng = gmaps.LatLng(0, 0)]);
Expand All @@ -228,7 +228,7 @@ void main() {
gmaps.Event.trigger(map, 'bounds_changed', <Object>[]); // Causes 2 events
gmaps.Event.trigger(map, 'idle', <Object>[]);

final List<MapEvent<Object>> events = await capturedEvents.toList();
final List<MapEvent<Object?>> events = await capturedEvents.toList();

expect(events[0], isA<MapTapEvent>());
expect(events[1], isA<MapLongPressEvent>());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -338,25 +338,25 @@ void main() {
// Verify all event streams are filtered correctly from the main one...
group('Event Streams', () {
const int mapId = 0;
late StreamController<MapEvent<Object>> streamController;
late StreamController<MapEvent<Object?>> streamController;
setUp(() {
streamController = StreamController<MapEvent<Object>>.broadcast();
streamController = StreamController<MapEvent<Object?>>.broadcast();
when(controller.events)
.thenAnswer((Invocation realInvocation) => streamController.stream);
plugin.debugSetMapById(<int, GoogleMapController>{mapId: controller});
});

// Dispatches a few events in the global streamController, and expects *only* the passed event to be there.
Future<void> _testStreamFiltering(
Stream<MapEvent<Object>> stream, MapEvent<Object> event) async {
Stream<MapEvent<Object?>> stream, MapEvent<Object?> event) async {
Timer.run(() {
streamController.add(_OtherMapEvent(mapId));
streamController.add(event);
streamController.add(_OtherMapEvent(mapId));
streamController.close();
});

final List<MapEvent<Object>> events = await stream.toList();
final List<MapEvent<Object?>> events = await stream.toList();

expect(events.length, 1);
expect(events[0], event);
Expand All @@ -368,7 +368,7 @@ void main() {

final Stream<CameraMoveStartedEvent> stream = plugin.onCameraMoveStarted(mapId: mapId);

await _testStreamFiltering(stream as Stream<MapEvent<Object>>, event as MapEvent<Object>);
await _testStreamFiltering(stream, event);
});
testWidgets('onCameraMoveStarted', (WidgetTester tester) async {
final CameraMoveEvent event = CameraMoveEvent(
Expand All @@ -387,7 +387,7 @@ void main() {

final Stream<CameraIdleEvent> stream = plugin.onCameraIdle(mapId: mapId);

await _testStreamFiltering(stream as Stream<MapEvent<Object>>, event as MapEvent<Object>);
await _testStreamFiltering(stream, event);
});
// Marker events
testWidgets('onMarkerTap', (WidgetTester tester) async {
Expand Down Expand Up @@ -465,19 +465,19 @@ void main() {

final Stream<MapTapEvent> stream = plugin.onTap(mapId: mapId);

await _testStreamFiltering(stream as Stream<MapEvent<Object>>, event as MapEvent<Object>);
await _testStreamFiltering(stream, event);
});
testWidgets('onLongPress', (WidgetTester tester) async {
final MapLongPressEvent event = MapLongPressEvent(mapId, const LatLng(43.3608, -5.8425));

final Stream<MapLongPressEvent> stream = plugin.onLongPress(mapId: mapId);

await _testStreamFiltering(stream as Stream<MapEvent<Object>>, event as MapEvent<Object>);
await _testStreamFiltering(stream, event);
});
});
});
}

class _OtherMapEvent extends MapEvent<Object> {
_OtherMapEvent(int mapId) : super(mapId, mapId);
class _OtherMapEvent extends MapEvent<Object?> {
_OtherMapEvent(int mapId) : super(mapId, null);
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();

group('MarkersController', () {
late StreamController<MapEvent<Object>> events;
late StreamController<MapEvent<Object?>> events;
late MarkersController controller;
late gmaps.GMap map;

setUp(() {
events = StreamController<MapEvent<Object>>();
events = StreamController<MapEvent<Object?>>();
controller = MarkersController(stream: events);
map = gmaps.GMap(html.DivElement());
controller.bindToMap(123, map);
Expand Down Expand Up @@ -212,7 +212,7 @@ void main() {

content?.click();

final MapEvent<Object> event = await events.stream.first;
final MapEvent<Object?> event = await events.stream.first;

expect(event, isA<InfoWindowTapEvent>());
expect((event as InfoWindowTapEvent).value, equals(const MarkerId('1')));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ void main() {
});

group('CirclesController', () {
late StreamController<MapEvent<Object>> events;
late StreamController<MapEvent<Object?>> events;
late CirclesController controller;

setUp(() {
events = StreamController<MapEvent<Object>>();
events = StreamController<MapEvent<Object?>>();
controller = CirclesController(stream: events);
controller.bindToMap(123, map);
});
Expand Down Expand Up @@ -115,11 +115,11 @@ void main() {
});

group('PolygonsController', () {
late StreamController<MapEvent<Object>> events;
late StreamController<MapEvent<Object?>> events;
late PolygonsController controller;

setUp(() {
events = StreamController<MapEvent<Object>>();
events = StreamController<MapEvent<Object?>>();
controller = PolygonsController(stream: events);
controller.bindToMap(123, map);
});
Expand Down Expand Up @@ -284,11 +284,11 @@ void main() {
});

group('PolylinesController', () {
late StreamController<MapEvent<Object>> events;
late StreamController<MapEvent<Object?>> events;
late PolylinesController controller;

setUp(() {
events = StreamController<MapEvent<Object>>();
events = StreamController<MapEvent<Object?>>();
controller = PolylinesController(stream: events);
controller.bindToMap(123, map);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ part of google_maps_flutter_web;
class CirclesController extends GeometryController {
/// Initialize the cache. The [StreamController] comes from the [GoogleMapController], and is shared with other controllers.
CirclesController({
required StreamController<MapEvent<Object>> stream,
required StreamController<MapEvent<Object?>> stream,
}) : _streamController = stream,
_circleIdToController = <CircleId, CircleController>{};

// A cache of [CircleController]s indexed by their [CircleId].
final Map<CircleId, CircleController> _circleIdToController;

// The stream over which circles broadcast their events
final StreamController<MapEvent<Object>> _streamController;
final StreamController<MapEvent<Object?>> _streamController;

/// Returns the cache of [CircleController]s. Test only.
@visibleForTesting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class GoogleMapController {
/// Initializes the GMap, and the sub-controllers related to it. Wires events.
GoogleMapController({
required int mapId,
required StreamController<MapEvent<Object>> streamController,
required StreamController<MapEvent<Object?>> streamController,
required CameraPosition initialCameraPosition,
Set<Marker> markers = const <Marker>{},
Set<Polygon> polygons = const <Polygon>{},
Expand Down Expand Up @@ -88,14 +88,14 @@ class GoogleMapController {
gmaps.GMap? _googleMap;

// The StreamController used by this controller and the geometry ones.
final StreamController<MapEvent<Object>> _streamController;
final StreamController<MapEvent<Object?>> _streamController;

/// The StreamController for the events of this Map. Only for integration testing.
@visibleForTesting
StreamController<MapEvent<Object>> get stream => _streamController;
StreamController<MapEvent<Object?>> get stream => _streamController;

/// The Stream over which this controller broadcasts events.
Stream<MapEvent<Object>> get events => _streamController.stream;
Stream<MapEvent<Object?>> get events => _streamController.stream;

// Geometry controllers, for different features of the map.
CirclesController? _circlesController;
Expand Down Expand Up @@ -189,27 +189,27 @@ class GoogleMapController {
map.onClick.listen((gmaps.IconMouseEvent event) {
assert(event.latLng != null);
_streamController.add(
MapTapEvent(_mapId, _gmLatLngToLatLng(event.latLng!)) as MapEvent<Object>,
MapTapEvent(_mapId, _gmLatLngToLatLng(event.latLng!)),
);
});
map.onRightclick.listen((gmaps.MapMouseEvent event) {
assert(event.latLng != null);
_streamController.add(
MapLongPressEvent(_mapId, _gmLatLngToLatLng(event.latLng!)) as MapEvent<Object>,
MapLongPressEvent(_mapId, _gmLatLngToLatLng(event.latLng!)),
);
});
map.onBoundsChanged.listen((void _) {
if (!_mapIsMoving) {
_mapIsMoving = true;
_streamController.add(CameraMoveStartedEvent(_mapId) as MapEvent<Object>);
_streamController.add(CameraMoveStartedEvent(_mapId));
}
_streamController.add(
CameraMoveEvent(_mapId, _gmViewportToCameraPosition(map)),
);
});
map.onIdle.listen((void _) {
_mapIsMoving = false;
_streamController.add(CameraIdleEvent(_mapId) as MapEvent<Object>);
_streamController.add(CameraIdleEvent(_mapId));
});
}

Expand Down Expand Up @@ -425,7 +425,7 @@ class GoogleMapController {
}

/// A MapEvent event fired when a [mapId] on web is interactive.
class WebMapReadyEvent extends MapEvent<Object> {
class WebMapReadyEvent extends MapEvent<Object?> {
/// Build a WebMapReady Event for the map represented by `mapId`.
WebMapReadyEvent(int mapId) : super(mapId, mapId);
WebMapReadyEvent(int mapId) : super(mapId, null);
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class GoogleMapsPlugin extends GoogleMapsFlutterPlatform {
}

// Convenience getter for a stream of events filtered by their mapId.
Stream<MapEvent<Object>> _events(int mapId) => _map(mapId).events;
Stream<MapEvent<Object?>> _events(int mapId) => _map(mapId).events;

// Convenience getter for a map controller by its mapId.
GoogleMapController _map(int mapId) {
Expand Down Expand Up @@ -307,8 +307,8 @@ class GoogleMapsPlugin extends GoogleMapsFlutterPlatform {
return _mapById[creationId]!.widget!;
}

final StreamController<MapEvent<Object>> controller =
StreamController<MapEvent<Object>>.broadcast();
final StreamController<MapEvent<Object?>> controller =
StreamController<MapEvent<Object?>>.broadcast();

final GoogleMapController mapController = GoogleMapController(
initialCameraPosition: initialCameraPosition,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ part of google_maps_flutter_web;
class MarkersController extends GeometryController {
/// Initialize the cache. The [StreamController] comes from the [GoogleMapController], and is shared with other controllers.
MarkersController({
required StreamController<MapEvent<Object>> stream,
required StreamController<MapEvent<Object?>> stream,
}) : _streamController = stream,
_markerIdToController = <MarkerId, MarkerController>{};

// A cache of [MarkerController]s indexed by their [MarkerId].
final Map<MarkerId, MarkerController> _markerIdToController;

// The stream over which markers broadcast their events
final StreamController<MapEvent<Object>> _streamController;
final StreamController<MapEvent<Object?>> _streamController;

/// Returns the cache of [MarkerController]s. Test only.
@visibleForTesting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ part of google_maps_flutter_web;
class PolygonsController extends GeometryController {
/// Initializes the cache. The [StreamController] comes from the [GoogleMapController], and is shared with other controllers.
PolygonsController({
required StreamController<MapEvent<Object>> stream,
required StreamController<MapEvent<Object?>> stream,
}) : _streamController = stream,
_polygonIdToController = <PolygonId, PolygonController>{};

// A cache of [PolygonController]s indexed by their [PolygonId].
final Map<PolygonId, PolygonController> _polygonIdToController;

// The stream over which polygons broadcast events
final StreamController<MapEvent<Object>> _streamController;
final StreamController<MapEvent<Object?>> _streamController;

/// Returns the cache of [PolygonController]s. Test only.
@visibleForTesting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ part of google_maps_flutter_web;
class PolylinesController extends GeometryController {
/// Initializes the cache. The [StreamController] comes from the [GoogleMapController], and is shared with other controllers.
PolylinesController({
required StreamController<MapEvent<Object>> stream,
required StreamController<MapEvent<Object?>> stream,
}) : _streamController = stream,
_polylineIdToController = <PolylineId, PolylineController>{};

// A cache of [PolylineController]s indexed by their [PolylineId].
final Map<PolylineId, PolylineController> _polylineIdToController;

// The stream over which polylines broadcast their events
final StreamController<MapEvent<Object>> _streamController;
final StreamController<MapEvent<Object?>> _streamController;

/// Returns the cache of [PolylineContrller]s. Test only.
@visibleForTesting
Expand Down