Я пытаюсь написать собственный код для своего проекта Flutter, используя Swift и Xcode, и для начала я следую примеру на официальном сайте Flutter в разделе интеграции платформы с документацией на сайте ниже под примером swift / ios ,
https://flutter.dev/docs/development/platform-integration/platform-channels?tab=ios-channel-swift-tab
на стороне клиента реализации все в порядке, я точно следовал примеру кода. Однако на собственной стороне в файле «AppDelegate.swift» я получаю сообщение об ошибке: «Значение типа« AppDelegate »не имеет члена self? .receiveBatteryLevel (result: result) "
мой код в AppDelegate.swift выглядит следующим образом:
import UIKit
import Flutter
import Firebase
import GoogleMaps
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GMSServices.provideAPIKey("myKeyGoesHere(don't mind)")
FirebaseApp.configure()
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let batteryChannel = FlutterMethodChannel(name:"samples.flutter.dev/battery",
binaryMessenger: controller as! FlutterBinaryMessenger)
batteryChannel.setMethodCallHandler({
[weak self] (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
// Note: this method is invoked on the UI thread.
// Handle battery messages.
guard call.method == "getBatteryLevel" else {
result(FlutterMethodNotImplemented)
return
}
self?.receiveBatteryLevel(result: result)
})
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
private func receiveBatteryLevel(result: FlutterResult) {
let device = UIDevice.current
device.isBatteryMonitoringEnabled = true
if device.batteryState == UIDevice.BatteryState.unknown {
result(FlutterError(code: "UNAVAILABLE",message: "Battery info unavailable",details: nil)
)
} else {
result(Int(device.batteryLevel * 100))
}
}