map_helper.dart 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import 'package:flutter_map/flutter_map.dart';
  2. import 'package:location/socket/atmob_location_client.dart';
  3. import '../../utils/atmob_log.dart';
  4. class MapHelper {
  5. MapHelper._();
  6. static const String tag = "FlutterMapHelper";
  7. static MapLocation? _lastLocation;
  8. static final List<MapLocationListener> _locationListeners = [];
  9. static Future<void> init() async {
  10. await FlutterMap.init();
  11. _initLocationClient();
  12. }
  13. static void _initLocationClient() {
  14. AtmobLocationClient atmobLocationClient =
  15. AtmobLocationClient.getAtmobLocationClient();
  16. FlutterMap.receiveLocationStream(listener: (location) {
  17. AtmobLog.d(tag, "onLocationChanged: $location");
  18. if (location.errorCode == 0) {
  19. _lastLocation = location;
  20. atmobLocationClient.uploadLocation(location);
  21. try {
  22. for (MapLocationListener listener in _locationListeners) {
  23. listener.call(location);
  24. }
  25. } catch (e) {
  26. AtmobLog.e(tag, "onLocationChanged error: $e");
  27. }
  28. }
  29. });
  30. }
  31. static Future<void> startLocation() {
  32. return FlutterMap.startLocation();
  33. }
  34. static MapLocation? getLastLocation() {
  35. return _lastLocation;
  36. }
  37. static void addLocationListener(MapLocationListener listener) {
  38. _locationListeners.add(listener);
  39. }
  40. static void removeLocationListener(MapLocationListener listener) {
  41. _locationListeners.remove(listener);
  42. }
  43. }