Как показать собственные представления iOS в приложении Flutter?
В настоящее время я работаю над проектом, в котором мне нужно реализовать графический фреймворк, написанный для Android и iOS; тем не менее, я пишу приложение, используя Flutter/Dart, и до сих пор не могу найти какой-либо способ для отображения собственных представлений iOS в приложении Flutter. Я нашел модуль, написанный для Android, который утверждает, что делает это ( сообщение в блоге), и мне любопытно, если кто-нибудь знает какие-либо модули или методы, которые могут достичь этого для iOS.
Я знаю, что Flutter имеет функцию ChannelMethod, но это не решение - по крайней мере, насколько я понимаю, ChannelMethods может передавать сообщения, относящиеся к платформе, но это не помогает мне показывать модуль для платформы в приложении Flutter.
Мне также пришло в голову жестко закодировать эквивалентный графический интерфейс во Flutter, а затем использовать ChannelMethods для передачи необходимых данных, но это не идеально, потому что кажется, что не все данные, которые мне понадобятся от плагина, легко доступны. Я действительно ищу способ показать UIView во Флаттере.
Есть ли способ показать родное представление iOS в приложении Flutter? В качестве альтернативы, есть ли способ перейти на iOS viewController из приложения Flutter?
0 ответов
Вы можете использовать представления платформы Flutter для отображения собственных виджетов платформы в приложении 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