Files
packages.dart/packages/flutter_vibrate/ios/Classes/SwiftVibratePlugin.swift
T
André Felipe Fleck Bedran 1164b50cc2 Refactor isDevice check to computed property
Refactor isDevice property to use computed property and better simulator detection API.
2026-02-23 19:45:47 -03:00

92 lines
2.3 KiB
Swift
Vendored

import Flutter
import UIKit
import AudioToolbox
public class SwiftVibratePlugin: NSObject, FlutterPlugin, VibrateApi {
private var isDevice: Bool {
#if targetEnvironment(simulator)
return false
#else
return true
#endif
}
public static func register(with registrar: FlutterPluginRegistrar) {
let messenger : FlutterBinaryMessenger = registrar.messenger()
let api : VibrateApi & NSObjectProtocol = SwiftVibratePlugin()
VibrateApiSetup.setUp(binaryMessenger: messenger, api: api)
}
func canVibrate() throws -> Bool {
return isDevice
}
func vibrate(duration: Int64) throws {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
}
func impact() throws {
if #available(iOS 10.0, *) {
let generator = UIImpactFeedbackGenerator(style: .medium)
generator.prepare()
generator.impactOccurred()
}
}
func selection() throws {
if #available(iOS 10.0, *) {
let generator = UISelectionFeedbackGenerator()
generator.prepare()
generator.selectionChanged()
}
}
func success() throws {
if #available(iOS 10.0, *) {
let generator = UINotificationFeedbackGenerator()
generator.prepare()
generator.notificationOccurred(.success)
}
}
func warning() throws {
if #available(iOS 10.0, *) {
let generator = UINotificationFeedbackGenerator()
generator.prepare()
generator.notificationOccurred(.warning)
}
}
func error() throws {
if #available(iOS 10.0, *) {
let generator = UINotificationFeedbackGenerator()
generator.prepare()
generator.notificationOccurred(.error)
}
}
func heavy() throws {
if #available(iOS 10.0, *) {
let generator = UIImpactFeedbackGenerator(style: .heavy)
generator.prepare()
generator.impactOccurred()
}
}
func medium() throws {
if #available(iOS 10.0, *) {
let generator = UIImpactFeedbackGenerator(style: .medium)
generator.prepare()
generator.impactOccurred()
}
}
func light() throws {
if #available(iOS 10.0, *) {
let generator = UIImpactFeedbackGenerator(style: .light)
generator.prepare()
generator.impactOccurred()
}
}
}