blob: 65057d8c869e2d254896538c24f4ce6b44f5b5d2 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
part of google_maps_flutter_web;
/// The `CircleController` class wraps a [gmaps.Circle] and its `onTap` behavior.
class CircleController {
gmaps.Circle? _circle;
final bool _consumeTapEvents;
/// Creates a `CircleController`, which wraps a [gmaps.Circle] object and its `onTap` behavior.
CircleController({
required gmaps.Circle circle,
bool consumeTapEvents = false,
ui.VoidCallback? onTap,
}) : _circle = circle,
_consumeTapEvents = consumeTapEvents {
if (onTap != null) {
circle.onClick.listen((_) {
onTap.call();
});
}
}
/// Returns the wrapped [gmaps.Circle]. Only used for testing.
@visibleForTesting
gmaps.Circle? get circle => _circle;
/// Returns `true` if this Controller will use its own `onTap` handler to consume events.
bool get consumeTapEvents => _consumeTapEvents;
/// Updates the options of the wrapped [gmaps.Circle] object.
///
/// This cannot be called after [remove].
void update(gmaps.CircleOptions options) {
assert(_circle != null, 'Cannot `update` Circle after calling `remove`.');
_circle!.options = options;
}
/// Disposes of the currently wrapped [gmaps.Circle].
void remove() {
if (_circle != null) {
_circle!.visible = false;
_circle!.radius = 0;
_circle!.map = null;
_circle = null;
}
}
}