嵌入 Flutter 到 iOS 原生应用中是一种常见的做法,让我们一起探讨如何在 iOS 原生应用中嵌入 Flutter,并实现原生与 Flutter 代码的交互。
步骤一:配置 Flutter 项目
-
创建 Flutter 项目
首先,在终端中使用以下命令创建一个新的 Flutter 项目:
复制
flutter create my_flutter_project -
构建 Flutter 项目
在终端中进入 Flutter 项目目录,运行以下命令构建 Flutter 项目:
复制
flutter build ios
步骤二:集成到 iOS 应用
-
在 iOS 项目中集成 Flutter
在 iOS 项目中打开
Runner.xcworkspace文件,这是你的 iOS 项目文件。 -
在
AppDelegate.swift中引入 Flutter 框架在
AppDelegate.swift文件中添加以下代码引入 Flutter 框架:复制
import Flutter -
初始化 FlutterEngine
在
AppDelegate.swift的application(_:didFinishLaunchingWithOptions:)方法中初始化FlutterEngine:复制
let flutterEngine = FlutterEngine(name: "my flutter engine") flutterEngine.run() -
创建 FlutterViewController
在需要显示 Flutter 界面的地方,创建
FlutterViewController并设置engine:复制
let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil) self.window.rootViewController = flutterViewController self.window.makeKeyAndVisible()
步骤三:原生与 Flutter 交互
-
从原生调用 Flutter 方法
在原生代码中,可以通过
flutterEngine调用 Flutter 方法:复制
flutterEngine.run(withEntrypoint: nil) -
从 Flutter 调用原生方法
在 Flutter 中,可以使用
MethodChannel与原生代码进行通信。例如,在 Flutter 中调用原生方法:复制
const platform = MethodChannel('samples.flutter.dev/battery'); final int result = await platform.invokeMethod('getBatteryLevel');
集成问题:
- import找不到Flutter库?
- 在flutter文件中做了修改,但是重新运行原生,那么直接用运行是不会显示最新的代码效果的;
可以尝试Xcode执行Produce-Clean Build Folder,然后重新pod install再重新运行;