繁体   English   中英

如何在 Flutter 应用程序中显示原生 iOS 视图?

[英]How to show native iOS views in a Flutter application?

我目前正在做一个项目,我需要在其中实现一个为 Android 和 iOS 编写的图形框架; 但是,我正在使用 Flutter/Dart 编写应用程序,到目前为止我找不到任何方法在 Flutter 应用程序中显示原生 iOS 视图。 我发现了一个为 android 编写的模块,声称可以做到这一点( 博客文章),我很好奇是否有人知道任何可以为 iOS 实现这一点的模块或技术。

我知道 Flutter 有 ChannelMethod 功能,但这不是解决方案——至少在我的理解中,ChannelMethods 可以传递特定于平台的消息,但这并不能帮助我在 Flutter 应用程序中展示特定于平台的插件。

我还想到在 Flutter 中硬编码一个等效的图形界面,然后使用 ChannelMethods 传递所需的数据,但这并不理想,因为似乎并非我需要从插件中获得的所有数据都可以轻松获得。 我真的在寻找一种以某种方式在 Flutter 中显示 UIView 的方法。

有没有办法在 Flutter 应用程序中显示原生 iOS 视图? 或者,有没有办法从 Flutter 应用程序转到 iOS viewController?

您可以使用Flutter 平台视图在 Flutter 应用程序中显示平台原生小部件。

在文档中给出的示例中, FLNativeViewFactory创建平台视图,并提供对UIView的引用。 可以使用提供的UIView参考添加 iOS 视图。

使用 Swift

class FLNativeView: NSObject, FlutterPlatformView {
  init(
    frame: CGRect,
    viewIdentifier viewId: Int64,
    arguments args: Any?,
    binaryMessenger messenger: FlutterBinaryMessenger?
  ){
    _view = UIView()
    super.init()
    // iOS views can be added here
  }
}

使用 Objective-C

@implementation FLNativeView {
   UIView *_view;
}
- (instancetype)initWithFrame:(CGRect)frame
               viewIdentifier:(int64_t)viewId
                    arguments:(id _Nullable)args
              binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger {
  if (self = [super init]) {
    _view = [[UIView alloc] init];
  }
  // iOS views can be added here
  return self;
}

@end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM