FWFWebViewFactory
FWFWebViewFactory 类是一个用于创建和管理 FWFWebView 实例的工厂类。它实现了 FlutterPlatformViewFactory 协议,这使得它能够在 Flutter 中创建平台视图。
类声明
@interface FWFWebViewFactory : NSObject <FlutterPlatformViewFactory>
@property(nonatomic, weak) FWFInstanceManager *instanceManager;
- (instancetype)initWithManager:(FWFInstanceManager *)manager;
@end
- FWFWebViewFactory继承自- NSObject并实现了- FlutterPlatformViewFactory协议。
- 它有一个属性 instanceManager,用于管理FWFWebView实例。
初始化方法
@implementation FWFWebViewFactory
- (instancetype)initWithManager:(FWFInstanceManager *)manager {
  self = [self init];
  if (self) {
    _instanceManager = manager;
  }
  return self;
}
- initWithManager:方法是该类的初始化方法,接受一个- FWFInstanceManager实例作为参数。
- 初始化时,将传入的 manager赋值给instanceManager属性。
FlutterPlatformViewFactory 协议方法
createArgsCodec
- (NSObject<FlutterMessageCodec> *)createArgsCodec {
  return [FlutterStandardMessageCodec sharedInstance];
}
- 该方法返回一个FlutterStandardMessageCodec实例,用于编码和解码消息。
createWithFrame:viewIdentifier:arguments: (iOS)
#if TARGET_OS_IOS
- (NSObject<FlutterPlatformView> *)createWithFrame:(CGRect)frame
                                    viewIdentifier:(int64_t)viewId
                                         arguments:(id _Nullable)args {
  NSNumber *identifier = (NSNumber *)args;
  FWFWebView *webView =
      (FWFWebView *)[self.instanceManager instanceForIdentifier:identifier.longValue];
  webView.frame = frame;
  return webView;
}
- 该方法在 iOS 平台上实现,用于创建一个 FWFWebView实例。
- 它接受一个 CGRect类型的frame,一个int64_t类型的viewId,以及一个可选的args参数。
- args参数被转换为- NSNumber类型,并用于从- instanceManager中获取对应的- FWFWebView实例。
- 设置 webView的frame属性并返回该实例。
createWithViewIdentifier:arguments: (macOS)
#else
- (nonnull NSView *)createWithViewIdentifier:(int64_t)viewId arguments:(nullable id)args {
  NSNumber *identifier = (NSNumber *)args;
  FWFWebView *webView =
      (FWFWebView *)[self.instanceManager instanceForIdentifier:identifier.longValue];
  return webView;
}
#endif
- 该方法在 macOS 平台上实现,用于创建一个 FWFWebView实例。
- 它接受一个 int64_t类型的viewId和一个可选的args参数。
- args参数被转换为- NSNumber类型,并用于从- instanceManager中获取对应的- FWFWebView实例。
- 返回该 webView实例。
本文作者:Maeiee
本文链接:FWFWebViewFactory
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!
