Откройте нативный UIViewController во флаттере - PullRequest
12 голосов
/ 24 мая 2019

У меня есть приложение, которое я разрабатываю во Flutter, и у него есть один UIViewController, который должен быть реализован в собственном IOS (другого обходного пути нет, это необходимо)

Я реализовал это, оно работаетв соответствии с первыми тестами, но я бы хотел еще раз проверить, насколько это хорошо, по вашему мнению, поскольку я не настолько опытен во Flutter, и я боюсь немного сделать некоторый беспорядок в моем стеке навигации приложений, чтоможет вызвать ошибки в будущем .

Итак, я реализовал это с помощью 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()

И мой метод open выглядит так:

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 Ответ

5 голосов
/ 29 мая 2019

При создании кроссплатформенного приложения вполне можно использовать Native API, но убедитесь, что другого способа достичь своей цели нет.Много раз (когда кроссплатформенный движок / SDK является новым) у вас нет другого выбора, кроме как использовать нативный код для завершения своей функциональности.

Не уверен в своей цели, но общая проблема с кроссплатформенным движком / sdk (например, Flutter) состоит в том, что сторонний SDK / API (например, Chartboost, Stripe, Twilio) требует времени для перевода в этотengine / sdk, который вы используете, поэтому, пока он недоступен, у вас нет другого выбора, кроме как вызывать эти API-интерфейсы.

Другая проблема возникает из-за того, что некоторые API для конкретной платформы, например, Camera, Contacts, In-App, GameCenter и т. д., не делают.Приходите вместе с кроссплатформенным SDK или понадобится время, чтобы получить какую-нибудь оболочку для таких API, поэтому во всех таких случаях вы можете использовать Native API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...