map_helper.dart 1.6 KB

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