ios - 我怎样才能从 FlutterViewController "push"UIViewController

标签 ios uiviewcontroller flutter

我想在 Flutter View 上“推送”一个新的原生 View (Android 中的 Activity 和 iOS 中的 UIViewController),在新的原生 View 完成/完成后,让屏幕返回到 Flutter View 。

我可以在 Android 中做到这一点。 但是我对 iOS 很陌生,当我尝试在 ios/Runner/AppDelegate.m 中执行此操作时:

  SwiftViewController *swiftViewController = [controller.storyboard instantiateViewControllerWithIdentifier:@"SwiftViewController"];
  [(FlutterViewController *)self.window.rootViewController pushViewController:swiftViewController animated:YES];

报错:

No visible @interface for "FlutterViewController" declared the selector 'pushViewController:animated'

那么如何在 iOS 中做到这一点?谢谢

最佳答案

在 Swift 中,我们可以使用方法 channel 从 flutter Action 事件中打开原生 iOS viewController,

  • 在flutter中,需要添加以下几行来触发iOS原生方法。在您的操作方法中添加这些行
var platform = const MethodChannel('com.nativeActivity/iosChannel');
final String result = await platform.invokeMethod('StartNativeIOS');
  • 在 iOS 中,在 AppDelegate 应用程序方法中添加以下行
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController

let methodChannel = FlutterMethodChannel(name: "com.nativeActivity/iosChannel", binaryMessenger:controller.binaryMessenger)

methodChannel.setMethodCallHandler({
  (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
        
  if call.method == "StartNativeIOS" {
    let mainVC = MainViewController() // Your viewController
    let navigationController = UINavigationController(rootViewController: mainVC)
    self.window.rootViewController = navigationController
    self.window.makeKeyAndVisible()
  } else {
    result(FlutterMethodNotImplemented)
    return
  }
})

它会起作用的!干杯

注意:但是没有回到 flutter View 。

所以这是正确的做法。 Flutter Navigation Using Coordinator Pattern

关于ios - 我怎样才能从 FlutterViewController "push"UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45645866/

相关文章:

iphone - 如何识别已呈现 UIViewController

flutter - 如何从 Dart 中的 switch 语句获取常量字符串

flutter - Flutter:保存TextField值

android - Firebase 身份验证 - 未处理的异常 : [firebase_auth/admin-restricted-operation] This operation is restricted to administrators only

javascript - iOS 8.1.3 上的 Bootstrap 模式问题

ios - 解析检索错误的 PFFile

cocoa - UIViewController 子类子类 - 如何避免 super 的实现?

ios - 单击 Swift XCode 中的编程按钮后如何在 Controller 之间切换

ios - 在 Objective-C 中解析 JSON 数组

ios - 如何从另一个 Controller 打开嵌入式 Segue Controller ?