map_helper.dart 1.7 KB

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