1
0
mirror of https://github.com/flutter/samples.git synced 2025-11-09 06:18:49 +00:00

adds macOS implementation for battery plugin (#589)

This commit is contained in:
Ayush Bherwani
2020-11-16 12:17:09 +05:30
committed by GitHub
parent 1a0ca82f06
commit 493b5cec2d
41 changed files with 1741 additions and 20 deletions

View File

@@ -0,0 +1,37 @@
// Copyright 2020 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import Cocoa
import FlutterMacOS
import IOKit.ps
public class FederatedPluginMacosPlugin: NSObject, FlutterPlugin {
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "battery", binaryMessenger: registrar.messenger)
let instance = FederatedPluginMacosPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
switch call.method {
case "getBatteryLevel":
getBatteryLevel(result)
default:
result(FlutterMethodNotImplemented)
}
}
private func getBatteryLevel(_ result: FlutterResult) {
let snapshot = IOPSCopyPowerSourcesInfo().takeRetainedValue()
let sources = IOPSCopyPowerSourcesList(snapshot).takeRetainedValue() as Array
let sourceInfo : NSDictionary = IOPSGetPowerSourceDescription(snapshot, sources[0]).takeUnretainedValue()
guard let capacity = sourceInfo[kIOPSCurrentCapacityKey] as? Int else {
result(FlutterError(code: "STATUS_UNAVAILABLE", message: "Not able to determine battery level", details: nil))
return
}
result(capacity)
}
}