✨ Native image, video rendering
This commit is contained in:
62
ios/Runner/NativeViews/NativeImage.swift
Normal file
62
ios/Runner/NativeViews/NativeImage.swift
Normal file
@ -0,0 +1,62 @@
|
||||
//
|
||||
// NativeImage.swift
|
||||
// Runner
|
||||
//
|
||||
// Created by LittleSheep on 2025/4/21.
|
||||
//
|
||||
|
||||
import Flutter
|
||||
import UIKit
|
||||
import Kingfisher
|
||||
|
||||
class FLNativeImageFactory : NSObject, FlutterPlatformViewFactory {
|
||||
private var messenger: FlutterBinaryMessenger
|
||||
|
||||
init(messenger: FlutterBinaryMessenger) {
|
||||
self.messenger = messenger
|
||||
super.init()
|
||||
}
|
||||
|
||||
func create(
|
||||
withFrame frame: CGRect,
|
||||
viewIdentifier viewId: Int64,
|
||||
arguments args: Any?
|
||||
) -> FlutterPlatformView {
|
||||
return FLNativeImage(
|
||||
frame: frame,
|
||||
viewIdentifier: viewId,
|
||||
arguments: args,
|
||||
binaryMessenger: messenger)
|
||||
}
|
||||
|
||||
/// Implementing this method is only necessary when the `arguments` in `createWithFrame` is not `nil`.
|
||||
public func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol {
|
||||
return FlutterStandardMessageCodec.sharedInstance()
|
||||
}
|
||||
}
|
||||
|
||||
class FLNativeImage : NSObject, FlutterPlatformView {
|
||||
private var _view: ImageView
|
||||
|
||||
init(
|
||||
frame: CGRect,
|
||||
viewIdentifier viewId: Int64,
|
||||
arguments args: Any?,
|
||||
binaryMessenger messenger: FlutterBinaryMessenger?
|
||||
) {
|
||||
_view = ImageView(frame: frame)
|
||||
super.init()
|
||||
|
||||
let argsMap = args as! [AnyHashable: Any]
|
||||
let source = argsMap["src"] as! String
|
||||
let blurHash = argsMap["blur"] as? String
|
||||
|
||||
if let url = URL(string: source) {
|
||||
_view.setImage(from: url, blurHash: blurHash)
|
||||
}
|
||||
}
|
||||
|
||||
func view() -> UIView {
|
||||
return _view
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user