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 是新的时)除了使用本机代码来完成您的功能之外,您别无选择。
不确定您的目标,但跨平台引擎/sdk(例如,Flutter
)的常见问题是第三方 SDK/API(例如,Chartboost, Stripe, Twilio
)需要一些时间才能转换为您正在使用的引擎/sdk,所以当它不可用时除了本机调用这些 API 之外别无选择。
发生的其他问题是某些特定于平台的 API,例如相机、联系人、应用内、GameCenter 等没有随跨平台 SDK 一起提供,或者需要时间来获取此类 API 的一些包装器,因此在所有这些情况下,您都可以使用本机 API .
推荐阅读
- vhdl - 不支持的属性错误
- sql - 选择中的子查询
- xwiki - AppWithinMinutes 编辑页面错误
- linux - 在 electron-installer-snap 中指定包依赖项
- azure - Azure 事件中心 - 在 ARM 模板中启用 Kafka
- python - 从 csv 文件设置参数
- java - onLocationChanged() 中的 map.moveCamera
- javascript - Javascript 日期解析 - 为什么?
- android - 通过 xml 添加片段时,onSaveInstanceState 后无法执行此操作
- css - Bootstrap 4 输入组框阴影