123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import 'package:amap_location_flutter_plugin/amap_location_flutter_plugin.dart';
- import 'package:liftmanager/utils/toast.dart';
- import 'package:permission_handler/permission_handler.dart';
- class LocationHelper {
- static LocationHelper _instance;
- AmapLocationFlutterPlugin _locationPlugin = AmapLocationFlutterPlugin();
- Function(String lat, String lng, String cityName,
- {String provinceName, String address}) _onLocationChanged;
- factory LocationHelper() {
- if (_instance == null) {
- _instance = LocationHelper._internal();
- _instance._locationPlugin.onLocationChanged().listen((event) {
- if (_instance._onLocationChanged != null) {
- var lat = event["latitude"];
- var lng = event["longitude"];
- var cityName = event['city'];
- var provinceName = event['province'];
- var address = event['address'];
- _instance._onLocationChanged(lat, lng, cityName,
- provinceName: provinceName, address: address);
- }
- });
- }
- return _instance;
- }
- LocationHelper._internal();
- Future<bool> requestPermission() async {
- final permissions = await PermissionHandler()
- .requestPermissions([PermissionGroup.location]);
- if (permissions[PermissionGroup.location] == PermissionStatus.granted) {
- return true;
- } else {
- toasts('需要定位权限!');
- return false;
- }
- }
- void getLocation(
- Function(String lat, String lng, String cityName)
- onLocationChanged) async {
- if (await requestPermission()) {
- _locationPlugin.startLocation();
- print('LocationHelper.getLocation ==== ');
- _onLocationChanged = onLocationChanged;
- }
- }
- stopGettingLocation() {
- _locationPlugin.stopLocation();
- }
- // destroyPlugin() {
- // if (null != _locationPlugin) {
- // _locationPlugin.destroy();
- // _locationPlugin = null;
- // }
- // }
- }
|