NIGGER SLAYER 36780a0789 h5测试
2026-04-13 12:05:59 +08:00

107 lines
3.5 KiB
Swift

import Flutter
import UIKit
public class VapFlutterView: NSObject, FlutterPlatformView {
private let containerView: UIView
private let channel: FlutterMethodChannel
private var vapTagContents: [String: [String: Any]] = [:]
private var isMuted = false
private var repeatCount = 0
private var scaleType = "fitCenter"
init(
context: CGRect,
params: [String: Any]?,
messenger: FlutterBinaryMessenger,
id: Int64
) {
containerView = UIView(frame: context)
channel = FlutterMethodChannel(name: "vap_view_\(id)", binaryMessenger: messenger)
super.init()
containerView.backgroundColor = .clear
channel.setMethodCallHandler(onMethodCall)
if let params {
if let initialScaleType = params["scaleType"] as? String {
scaleType = initialScaleType
}
if let initialLoop = params["loop"] as? Int {
repeatCount = initialLoop
}
if let initialMute = params["mute"] as? Bool {
isMuted = initialMute
}
if let tagContents = params["vapTagContents"] as? [String: [String: Any]] {
vapTagContents = tagContents
}
}
}
public func view() -> UIView {
containerView
}
private func onMethodCall(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
switch call.method {
case "dispose":
channel.setMethodCallHandler(nil)
result(nil)
case "playFile", "playAsset":
notifyUnsupportedPlayback(call.method)
result(nil)
case "stop":
result(nil)
case "setLoop":
if let args = call.arguments as? [String: Any], let loop = args["loop"] as? Int {
repeatCount = loop
}
result(nil)
case "setMute":
if let args = call.arguments as? [String: Any], let mute = args["mute"] as? Bool {
isMuted = mute
}
result(nil)
case "setScaleType":
if let args = call.arguments as? [String: Any], let value = args["scaleType"] as? String {
scaleType = value
}
result(nil)
case "setVapTagContent":
if let args = call.arguments as? [String: Any],
let tag = args["tag"] as? String,
let content = args["content"] as? [String: Any] {
vapTagContents[tag] = content
}
result(nil)
case "setVapTagContents":
if let args = call.arguments as? [String: Any],
let contents = args["contents"] as? [String: [String: Any]] {
vapTagContents = contents
}
result(nil)
case "getVapTagContent":
if let args = call.arguments as? [String: Any], let tag = args["tag"] as? String {
result(vapTagContents[tag])
} else {
result(nil)
}
case "getAllVapTagContents":
result(vapTagContents)
case "clearVapTagContents":
vapTagContents.removeAll()
result(nil)
default:
result(FlutterMethodNotImplemented)
}
}
private func notifyUnsupportedPlayback(_ method: String) {
channel.invokeMethod("onFailed", arguments: [
"errorCode": "-1",
"type": "unsupported",
"msg": "QGVAPlayer is disabled for this iOS build. \(method) is unavailable."
])
}
}