ios - 在 Flutter 中打开原生 UIViewController

我有一个在 Flutter 中开发的应用程序,它有一个 UIViewController 必须在原生 IOS 中实现(没有其他解决方法,这是必须的)

我已经实现了它,它根据第一次测试工作,但我想仔细检查一下你的意见是否还可以,因为我在 Flutter 方面没有那么经验丰富,我怕有点在我的应用导航堆栈中弄得一团糟,将来可能会导致错误

所以,我已经通过 MethodChannel 实现了它。我有一个方法,从“Flutter side”调用。我不会在此处粘贴与 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)
    }

你怎么看?

非常感谢您的任何建议,并提前感谢您的帮助!

最佳答案

在创建跨平台应用程序时使用 Native API 完全没问题,但请确保没有其他方法可以实现您的目标。很多时候(当跨平台引擎/sdk 是新的时)除了使用 native 代码来完成您的功能之外,您别无选择。

不确定您的目标,但跨平台引擎/sdk(例如 Flutter)的常见问题是第三方 SDK/API(例如 Chartboost、Stripe、Twilio) 需要一些时间来转换为您正在使用的引擎/sdk,因此当它不可用时,您别无选择,只能在 native 调用这些 API。

发生的其他问题是某些特定于平台的 API,例如相机、联系人、应用内、GameCenter 等没有随跨平台 SDK 一起提供,或者需要一些时间来获取此类 API 的一些包装器,因此在所有这些情况下,您都可以使用 Native API。

https://stackoverflow.com/questions/56290461/

相关文章:

flutter - 如何在 Ios 上更改状态栏文本颜色

android - 从原生 Android 主屏幕小部件调用 Flutter (Dart) 代码

layout - flutter 中从右到左(RTL)

flutter - flutter 中带有圆角的警报对话框

android - 是否可以在 flutter 中构建 android 小部件?

logging - Dart/flutter 错误 : 'toStringDeep' isn't d

flutter - 在 Flutter 本地干净地覆盖部分主题

error-handling - 如何在 flutter 中使用 bloc 模式进行错误处理?

flutter - debugPaintSizeEnabled 在 Flutter 中不起作用

dart - 使用 Flutter/dart 的 NTLM 身份验证