location_helper.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import 'package:amap_location_flutter_plugin/amap_location_flutter_plugin.dart';
  2. import 'package:liftmanager/utils/toast.dart';
  3. import 'package:permission_handler/permission_handler.dart';
  4. class LocationHelper {
  5. static LocationHelper _instance;
  6. AmapLocationFlutterPlugin _locationPlugin = AmapLocationFlutterPlugin();
  7. Function(String lat, String lng, String cityName,
  8. {String provinceName, String address}) _onLocationChanged;
  9. factory LocationHelper() {
  10. if (_instance == null) {
  11. _instance = LocationHelper._internal();
  12. _instance._locationPlugin.onLocationChanged().listen((event) {
  13. if (_instance._onLocationChanged != null) {
  14. var lat = event["latitude"];
  15. var lng = event["longitude"];
  16. var cityName = event['city'];
  17. var provinceName = event['province'];
  18. var address = event['address'];
  19. _instance._onLocationChanged(lat, lng, cityName,
  20. provinceName: provinceName, address: address);
  21. }
  22. });
  23. }
  24. return _instance;
  25. }
  26. LocationHelper._internal();
  27. Future<bool> requestPermission() async {
  28. final permissions = await PermissionHandler()
  29. .requestPermissions([PermissionGroup.location]);
  30. if (permissions[PermissionGroup.location] == PermissionStatus.granted) {
  31. return true;
  32. } else {
  33. toasts('需要定位权限!');
  34. return false;
  35. }
  36. }
  37. void getLocation(
  38. Function(String lat, String lng, String cityName,
  39. {String provinceName, String address})
  40. onLocationChanged) async {
  41. if (await requestPermission()) {
  42. _locationPlugin.startLocation();
  43. print('LocationHelper.getLocation ==== ');
  44. _onLocationChanged = onLocationChanged;
  45. }
  46. }
  47. stopGettingLocation() {
  48. _locationPlugin.stopLocation();
  49. }
  50. // destroyPlugin() {
  51. // if (null != _locationPlugin) {
  52. // _locationPlugin.destroy();
  53. // _locationPlugin = null;
  54. // }
  55. // }
  56. }