| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | ////  KeyboardEventHandler.swift//  flowy_infra_ui////  Created by Jaylen Bian on 7/17/21.//class KeyboardEventHandler: NSObject, FlutterStreamHandler {    var isKeyboardShow: Bool = false    var eventSink: FlutterEventSink?    override init() {        super.init()        NotificationCenter.default.addObserver(            self,            selector: #selector(handleKeyboardWillShow),            name: UIApplication.keyboardWillShowNotification,            object: nil)        NotificationCenter.default.addObserver(            self,            selector: #selector(handleKeyboardDidShow),            name: UIApplication.keyboardDidShowNotification,            object: nil)        NotificationCenter.default.addObserver(            self,            selector: #selector(handleKeyboardWillHide),            name: UIApplication.keyboardWillHideNotification,            object: nil)        NotificationCenter.default.addObserver(            self,            selector: #selector(handleKeyboardDidHide),            name: UIApplication.keyboardDidHideNotification,            object: nil)    }    func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {        eventSink = events        return nil    }    func onCancel(withArguments arguments: Any?) -> FlutterError? {        eventSink = nil        return nil    }    // MARK: Helper    @objc    private func handleKeyboardWillShow() {        guard !isKeyboardShow else {            return        }        isKeyboardShow = true        eventSink?(NSNumber(booleanLiteral: true))    }    @objc    private func handleKeyboardDidShow() {        guard !isKeyboardShow else {            return        }        isKeyboardShow = true        eventSink?(NSNumber(booleanLiteral: true))    }    @objc    private func handleKeyboardWillHide() {        guard isKeyboardShow else {            return        }        isKeyboardShow = false        eventSink?(NSNumber(booleanLiteral: false))    }    @objc    private func handleKeyboardDidHide() {        guard isKeyboardShow else {            return        }        isKeyboardShow = false        eventSink?(NSNumber(booleanLiteral: false))    }}
 |