Baseflow / Baseflow/flutter-geolocator

[Bug]: LOCATION UPDATE FAILURE:Error reason: (null)Error description: The operation couldn’t be completed. (kCLErrorDomain error 1.)

Open
#1,555 27 comments 6 reactions 1 assignee Claimed by @TimHoogstrate View on GitHub
Dominant language
Dart
Stars
1.3k
Forks
803
Avg merge
8h 16m
Merged PRs (30d)
1

Description

### Please check the following before submitting a new issue.

- [X] I have searched the [existing issues](https://github.com/baseflow/flutter-geolocator/issues).
- [X] I have carefully [read the documentation](https://github.com/Baseflow/flutter-geolocator/blob/main/geolocator/README.md) and verified I have added the required platform specific configuration.

### Please select affected platform(s)

- [ ] Android
- [X] iOS
- [ ] Linux
- [ ] macOS
- [ ] Web
- [ ] Windows

### Steps to reproduce

Steps to reproduce
1. Setup the Flutter app: Integrate the Geolocator package into a Flutter project.
2. Request location permissions: Include the necessary permissions (NSLocationWhenInUseUsageDescription, NSLocationAlwaysUsageDescription, etc.) in the Info.plist file.
3. Invoke Geolocator: Attempt to retrieve the current location using Geolocator.getCurrentPosition() or listen to location updates using Geolocator.getPositionStream().
4. Run the app on an iOS device: Deploy the app to an iOS device (not an emulator) and monitor the logs for any errors.

### Expected results

The app should request location permissions if not already granted, and then successfully retrieve the current location of the device, either once via getCurrentPosition() or continuously via getPositionStream().

### Actual results

Unhandled Exception: The operation couldn’t be completed. (kCLErrorDomain error 1.)

### Code sample

This is the logic i used in my code?
```dart
Future _requestLocationPermission() async {
if (_isRequestingPermission) return;

_isRequestingPermission = true;
try {
var status = await Permission.locationWhenInUse.request();
if (status.isGranted) {
_loadInitialLocation();
} else {
// Handle permission denial
}
} finally {
_isRequestingPermission = false;
}
}

// Future _requestLocationPermission() async {
// var status = await Permission.locationWhenInUse.request();
// if (status.isGranted) {
// _loadInitialLocation();
// } else {
// // Handle permission denial
// }
// }

Future _getCurrentLocation() async {
_currentPosition = await geolocator.Geolocator.getCurrentPosition(locationSettings: const geolocator.LocationSettings(accuracy: geolocator.LocationAccuracy.high));
if (!mounted) return;

//_initialCameraOptions = _getCameraOptions(_currentPosition);
_mapboxMap.flyTo(_getCameraOptions(_currentPosition), MapAnimationOptions(duration: 1000));
_updateLocationPuck();
}

void _enableLocationUpdates() {
geolocator.Geolocator.getPositionStream(
locationSettings: const geolocator.LocationSettings(accuracy: geolocator.LocationAccuracy.high)
).listen((geolocator.Position position) {
if (!mounted) return;

setState(() {
_currentPosition = position;
_updateLocationPuck();
});
});
}
```

### Screenshots or video

```
LOCATION UPDATE FAILURE:Error reason: (null)Error description: The operation couldn’t be completed. (kCLErrorDomain error 1.)
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: The operation couldn’t be completed. (kCLErrorDomain error 1.)
#0 GeolocatorApple.getPositionStream. (package:geolocator_apple/src/geolocator_apple.dart:188:9)
#1 Stream.handleError. (dart:async/stream.dart:931:16)
#2 _HandleErrorStream._handleError (dart:async/stream_pipe.dart:269:17)
#3 _ForwardingStreamSubscription._handleError (dart:async/stream_pipe.dart:157:13)
#4 _RootZone.runBinaryGuarded (dart:async/zone.dart:1606:10)
#5 _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:384:15)
#6 _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:402:7)
#7 _BufferingStreamSubscription._addError (dart:async/stream_impl.dart:306:7)
#8 _ForwardingStreamSubscription._addError (dart:async/stream_pipe.dart:128:11)
#9 _ForwardingStream._handleError (dart:async/stream_pipe.dart:95:10)
#10 _ForwardingStreamSubscription._handleError (dart:async/stream_pipe.dart:157:13)
#11 _RootZone.runBinaryGuarded (dart:async/zone.dart:1606:10)
#12 _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:384:15)
#13 _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:402:7)
#14 _BufferingStreamSubscription._addError (dart:async/stream_impl.dart:306:7)
#15 _SyncBroadcastStreamController._sendError. (dart:async/broadcast_stream_controller.dart:392:20)
#16 _BroadcastStreamController._forEachListener (dart:async/broadcast_stream_controller.dart:322:15)
#17 _SyncBroadcastStreamController._sendError (dart:async/broadcast_stream_controller.dart:391:5)
#18 _AsBroadcastStreamController.addError (dart:async/broadcast_stream_controller.dart:486:5)
#19 _RootZone.runBinaryGuarded (dart:async/zone.dart:1606:10)
#20 _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:384:15)
#21 _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:402:7)
#22 _DelayedError.perform (dart:async/stream_impl.dart:552:14)
#23 _PendingEvents.handleNext (dart:async/stream_impl.dart:646:11)
#24 _PendingEvents.schedule. (dart:async/stream_impl.dart:617:7)
#25 _microtaskLoop (dart:async/schedule_microtask.dart:40:21)
#26 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
```

### Version

13.0.1

### Flutter Doctor output

[✓] Flutter (Channel stable, 3.22.2, on macOS 14.5 23F79 darwin-x64, locale en-US)
• Flutter version 3.22.2 on channel stable at /Users/aditiallady/devlopment/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 761747bfc5 (2 months ago), 2024-06-05 22:15:13 +0200
• Engine revision edd8546116
• Dart version 3.4.3
• DevTools version 2.34.3

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
• Android SDK at /Users/aditiallady/Library/Android/sdk
• Platform android-34, build-tools 34.0.0
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.10+0-17.0.10b1087.21-11572160)
• All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.4)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 15F31d
• CocoaPods version 1.15.2

[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.3)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.10+0-17.0.10b1087.21-11572160)

[✓] VS Code (version 1.92.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.94.0

[✓] Connected device (5 available)
• sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64 • Android 14 (API 34) (emulator)
• Aditi’s iPhone (mobile) • 00008130-000E21A004298D3A • ios • iOS 17.5.1 21F90
• iPhone 15 Pro Max (mobile) • 1F14C548-F714-4573-8B73-4DA1E72B59A1 • ios • com.apple.CoreSimulator.SimRuntime.iOS-17-5 (simulator)
• macOS (desktop) • macos • darwin-x64 • macOS 14.5 23F79 darwin-x64
• Chrome (web) • chrome • web-javascript • Google Chrome 127.0.6533.101

[✓] Network resources
• All expected network resources are available.

• No issues found!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.