flutter-geolocator icon indicating copy to clipboard operation
flutter-geolocator copied to clipboard

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

Open alladyaditi opened this issue 1 year ago • 25 comments

Please check the following before submitting a new issue.

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?

Future<void> _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<void> _requestLocationPermission() async {
  //   var status = await Permission.locationWhenInUse.request();
  //   if (status.isGranted) {
  //     _loadInitialLocation();
  //   } else {
  //     // Handle permission denial
  //   }
  // }

  Future<void> _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.<anonymous closure> (package:geolocator_apple/src/geolocator_apple.dart:188:9)
#1      Stream.handleError.<anonymous closure> (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.<anonymous closure> (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.<anonymous closure> (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!

alladyaditi avatar Aug 14 '24 15:08 alladyaditi