我目前正在从事一个项目,该项目需要实现一个为Android和iOS编写的图形框架。但是,我正在使用Flutter / Dart编写应用程序,到目前为止,我找不到在Flutter应用程序中显示本机iOS视图的任何方法。我找到了一个为android编写的模块,声称可以做到这一点(blog post),并且我很好奇是否有人知道可以在iOS上实现此功能的任何模块或技术。
我知道Flutter具有ChannelMethod功能,但这不是解决方案-至少以我的理解,ChannelMethods可以传递特定于平台的消息,但这无助于我在Flutter应用程序中显示特定于平台的插件。
我还想过在Flutter中硬编码一个等效的图形界面,然后使用ChannelMethods传递所需的数据,但这并不理想,因为似乎并不是我从插件中需要的所有数据都可以轻松获得。我真的在寻找一种以某种方式在Flutter中显示UIView的方法。
是否可以在Flutter应用程序中显示本机iOS视图? 另外,有什么方法可以从Flutter应用程序中筛选到iOS viewController吗?
答案 0 :(得分:0)
您可以使用Flutter Platform Views在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