Откройте нативный UIViewController во флаттере
У меня есть приложение, которое я разрабатываю во Flutter, и у него есть один UIViewController, который должен быть реализован в собственном IOS (другого обходного пути нет, это необходимо)
Я реализовал его, он работает в соответствии с первыми тестами, но я хотел бы еще раз проверить, насколько это хорошо, по вашему мнению, поскольку я не настолько опытен во Флаттере, и я боюсь, что-то напутает в моем Навигация по стеку приложения, которая может вызвать ошибки в будущем.
Итак, я реализовал это с помощью MethodChannel. У меня есть метод, который вызывается со стороны флаттера. Я не вставляю свои вещи, связанные с MethodChannel, здесь, потому что они тривиальны.
В моем AppDelegate didFinishLaunchingWithOptions я добавил это:
let flutterViewController = FlutterViewController()
self.navigationController = UINavigationController(rootViewController: flutterViewController)
self.navigationController?.isNavigationBarHidden = true
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window.rootViewController = self.navigationController
self.window.makeKeyAndVisible()
И мой открытый метод, как это:
private func openNativeUI(result: FlutterResult) {
let sb = UIStoryboard(name: "Main", bundle: nil)
let uiController = sb.instantiateViewController(withIdentifier: "nativeui")
self.navigationController?.pushViewController(uiController, animated: true)
result(true)
}
Как вы думаете?
Любой совет высоко ценится и спасибо за вашу помощь заранее!
Ответы
Ответ 1
При создании кроссплатформенного приложения вполне нормально использовать Native API, но убедитесь, что нет другого пути для достижения вашей цели. Много раз (когда кроссплатформенный движок /SDK является новым) у вас нет другого выбора, кроме как использовать нативный код для завершения своей функциональности.
Не уверен в своей цели, но общая проблема с кроссплатформенным движком /sdk (например, Flutter
) заключается в том, что сторонний SDK/API (например, Chartboost, Stripe, Twilio
) занимает некоторое время для преобразования в тот движок /sdk, который вы используете поэтому, пока он недоступен, у вас нет другого выбора, кроме как вызывать эти API изначально.
Другая проблема возникает из-за того, что некоторые API для конкретной платформы, например, Camera, Contacts, In-App, GameCenter и т.д., Не поставляются вместе с кроссплатформенным SDK, или требуется некоторое время, чтобы получить какую-нибудь оболочку для такого API, поэтому во всех таких случаях вы можете использовать Native API.,