Can't Use CLLocation(or CLLocationManagerDelegate) in Flutter

237 Views Asked by At

I'm trying to use CLLocation in swift in my Flutter Project. I'm totally newb for Swift and flutter. So I followed the example of documentation but I can't find how can I use CLLocation well.

Here is my code.

import UIKit
import Flutter
import CoreLocation

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate, CLLocationManagerDelegate {
    let locationManager:CLLocationManager!

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        determineMyCurrentLocation()
    }

    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {

    /.../


        batteryChannel.setMethodCallHandler({
            (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
            switch call.method{
                case "getSpeed":
                    result(self.determineMyCurrentLocation())
                default:
                    result(FlutterMethodNotImplemented)
            }
        })

        GeneratedPluginRegistrant.register(with: self)
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
    func determineMyCurrentLocation() {
        locationManager = CLLocationManager()
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestAlwaysAuthorization()

        if CLLocationManager.locationServicesEnabled() {
            locationManager.startUpdatingLocation().then((res)=>{
                return locations[0].speed
            }catch(e){
                return -1;
            })
        }
    }
}

And this is the message I got enter image description here

Anyone help?

0

There are 0 best solutions below