109 lines
3.5 KiB
Swift
109 lines
3.5 KiB
Swift
//
|
|
// PullToRefreshChannelDelegate.swift
|
|
// flutter_inappwebview
|
|
//
|
|
// Created by Lorenzo Pichilli on 05/05/22.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public class PullToRefreshChannelDelegate : ChannelDelegate {
|
|
private weak var pullToRefreshControl: PullToRefreshControl?
|
|
|
|
public init(pullToRefreshControl: PullToRefreshControl, channel: FlutterMethodChannel) {
|
|
super.init(channel: channel)
|
|
self.pullToRefreshControl = pullToRefreshControl
|
|
}
|
|
|
|
public override func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
let arguments = call.arguments as? NSDictionary
|
|
|
|
switch call.method {
|
|
case "setEnabled":
|
|
if let pullToRefreshView = pullToRefreshControl {
|
|
let enabled = arguments!["enabled"] as! Bool
|
|
if enabled {
|
|
pullToRefreshView.delegate?.enablePullToRefresh()
|
|
} else {
|
|
pullToRefreshView.delegate?.disablePullToRefresh()
|
|
}
|
|
result(true)
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
case "isEnabled":
|
|
if let pullToRefreshView = pullToRefreshControl {
|
|
result(pullToRefreshView.delegate?.isPullToRefreshEnabled())
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
case "setRefreshing":
|
|
if let pullToRefreshView = pullToRefreshControl {
|
|
let refreshing = arguments!["refreshing"] as! Bool
|
|
if refreshing {
|
|
pullToRefreshView.beginRefreshing()
|
|
} else {
|
|
pullToRefreshView.endRefreshing()
|
|
}
|
|
result(true)
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
case "isRefreshing":
|
|
if let pullToRefreshView = pullToRefreshControl {
|
|
result(pullToRefreshView.isRefreshing)
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
case "setColor":
|
|
if let pullToRefreshView = pullToRefreshControl {
|
|
let color = arguments!["color"] as! String
|
|
pullToRefreshView.tintColor = UIColor(hexString: color)
|
|
result(true)
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
case "setBackgroundColor":
|
|
if let pullToRefreshView = pullToRefreshControl {
|
|
let color = arguments!["color"] as! String
|
|
pullToRefreshView.backgroundColor = UIColor(hexString: color)
|
|
result(true)
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
case "setStyledTitle":
|
|
if let pullToRefreshView = pullToRefreshControl {
|
|
let attributedTitleMap = arguments!["attributedTitle"] as! [String: Any?]
|
|
pullToRefreshView.attributedTitle = NSAttributedString.fromMap(map: attributedTitleMap)
|
|
result(true)
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
default:
|
|
result(FlutterMethodNotImplemented)
|
|
break
|
|
}
|
|
}
|
|
|
|
public func onRefresh() {
|
|
let arguments: [String: Any?] = [:]
|
|
channel?.invokeMethod("onRefresh", arguments: arguments)
|
|
}
|
|
|
|
public override func dispose() {
|
|
super.dispose()
|
|
pullToRefreshControl = nil
|
|
}
|
|
|
|
deinit {
|
|
dispose()
|
|
}
|
|
}
|