iOS原生嵌入Flutter

194 阅读1分钟

嵌入 Flutter 到 iOS 原生应用中是一种常见的做法,让我们一起探讨如何在 iOS 原生应用中嵌入 Flutter,并实现原生与 Flutter 代码的交互。

步骤一:配置 Flutter 项目

  1. 创建 Flutter 项目

     

    首先,在终端中使用以下命令创建一个新的 Flutter 项目:

    复制

    flutter create my_flutter_project
    
  2. 构建 Flutter 项目

     

    在终端中进入 Flutter 项目目录,运行以下命令构建 Flutter 项目:

    复制

    flutter build ios
    

步骤二:集成到 iOS 应用

  1. 在 iOS 项目中集成 Flutter

     

    在 iOS 项目中打开 Runner.xcworkspace 文件,这是你的 iOS 项目文件。

  2. 在 AppDelegate.swift 中引入 Flutter 框架

     

    在 AppDelegate.swift 文件中添加以下代码引入 Flutter 框架:

    复制

    import Flutter
    
  3. 初始化 FlutterEngine

     

    在 AppDelegate.swift 的 application(_:didFinishLaunchingWithOptions:) 方法中初始化 FlutterEngine

    复制

    let flutterEngine = FlutterEngine(name: "my flutter engine")
    flutterEngine.run()
    
  4. 创建 FlutterViewController

     

    在需要显示 Flutter 界面的地方,创建 FlutterViewController 并设置 engine

    复制

    let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)
    self.window.rootViewController = flutterViewController
    self.window.makeKeyAndVisible()
    

步骤三:原生与 Flutter 交互

  1. 从原生调用 Flutter 方法

     

    在原生代码中,可以通过 flutterEngine 调用 Flutter 方法:

    复制

    flutterEngine.run(withEntrypoint: nil)
    
  2. 从 Flutter 调用原生方法

     

    在 Flutter 中,可以使用 MethodChannel 与原生代码进行通信。例如,在 Flutter 中调用原生方法:

    复制

    const platform = MethodChannel('samples.flutter.dev/battery');
    final int result = await platform.invokeMethod('getBatteryLevel');
    

集成问题:

  1. import找不到Flutter库?
  2. 在flutter文件中做了修改,但是重新运行原生,那么直接用运行是不会显示最新的代码效果的;

可以尝试Xcode执行Produce-Clean Build Folder,然后重新pod install再重新运行;