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

3
我目前正在开发一个项目,需要实现已经针对Android和iOS编写的图形框架;但是,我正在使用Flutter/Dart编写应用程序,到目前为止,我找不到在Flutter应用程序中显示原生iOS视图的方法。我已经找到一个专门用于Android的模块,声称可以做到这一点(博客文章),我想知道是否有任何模块或技术可以实现这种效果在iOS上。
我知道Flutter具有ChannelMethod功能,但这并不是解决方案-至少从我的理解来看,ChannelMethods可以传递特定于平台的消息,但这无法帮助我在Flutter应用程序中显示特定于平台的插件。
我还考虑过在Flutter中硬编码等效的图形界面,然后使用ChannelMethods传递所需数据,但这并不理想,因为似乎并不是所有我需要从插件中获取的数据都很容易获得。我真的很想找到一种以某种方式在Flutter中显示UIView的方法。
有没有办法在Flutter应用程序中显示原生的iOS视图?或者,有没有办法从Flutter应用程序中segue到iOS视图控制器?

你看到了吗?https://github.com/flutter/flutter/issues/19030#issuecomment-437534853 - Mateusz
你可以通过Flutter通道来实现。 - Haroon khan
1个回答

0
您可以使用Flutter Platform Views在Flutter应用程序中显示平台原生小部件。
在文档中给出的示例中,FLNativeViewFactory创建了平台视图,并提供了对UIView的引用。 iOS视图可以使用提供的UIView参考添加。
使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接