import 'dart:async'; import 'package:latlong2/latlong.dart'; class AvesMapController { final StreamController _streamController = StreamController.broadcast(); Stream get _events => _streamController.stream; Stream get moveEvents => _events.where((event) => event is MapControllerMoveEvent).cast(); void dispose() { _streamController.close(); } void moveTo(LatLng latLng) => _streamController.add(MapControllerMoveEvent(latLng)); } class MapControllerMoveEvent { final LatLng latLng; MapControllerMoveEvent(this.latLng); }