一、由 Xcode 创建的新项目
1、删除 SceneDelegate.h 和 SceneDelegate.m 文件
文件位置如下图所示:

2、删除 AppDelegate.m 中的 UISceneSession 的两个方法
要删除的两个方法是:

3、在项目的 TARGETS 下的项目中的 info 模块下删除 Application Scene Manifest 字典
删除 Application Scene Manifest 如下图所示:

4、在 AppDelegate.h 中添加 window
在 AppDelegate.h中window 添加如下图所示:

5、在 AppDelegate.m 中添加一个窗口,并项目运行起来
创建的窗口位置和代码如下图所示:

二、添加 Flutter 模块
1、在项目的同级目录添加Flutter的模块
例如:
- 使用终端执行
cd指令进入项目一级目录,如下图所示:
-
在执行
$flutter create --template module xxx或$flutter create -t module xxx或$flutter create app指令,如下图所示:
注意:
xxx命名不能有大写字母,否则会报"flutterLib" is not a valid Dart package name.的错误。 -
经过上一步成功后的目录结构如下图所示:
三、Flutter 和 OC 项目添加依赖
-
原始项目是使用
CocoaPods进行管理的添加依赖-
1、没有
CocoaPods的,执行pod init进行增加(<font color=red>否则,直接跳过</font>),如下图所示:
-
2、打开项目通过
pod init成的Podfile文件,增加相关代码,增加代码是:// 顶部添加路径 flutter_application_path = "../flutterlib/" load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') // 每个某块添加 module install_all_flutter_pods(flutter_application_path)添加结果如下图所示:
-
3、由于
Flutter不支持Bitcode,需要在Xcode的TARGETS --> Build Settings模块下,在右侧搜索框内输入Bitcode,然后会显示如下图所示:
然后,我们将
Build Options下的Enable Bitcode的YES更改为NO,如下图所示:
-
4、执行
CocoaPods的pod install指令添加依赖成功。如下图所示:
-
四、原生项目里添加一个 Flutter的屏幕
1、在 AppDelegate.h中导入 Flutter模块(@import Flutter),并创建 FlutterEngine 属性。
如下图所示:

2、在 AppDelegate.m 中进行的修改,主要有引入插件头文件、创建 FlutterEngine 引擎、注册引擎到插件中
如下图所示:

3、在 ViewController 中添加按钮,并实现模态出 Flutter 页面
代码实现如下图所示:

4、在 ViewController 中添加按钮,并实PUSH出 Flutter 页面
代码实现如下图所示:

注意:上述可在模拟器上直接运行,如果要在真机上运行需要执行下面步骤。
-
1、打开项目的
Flutter模块的目录,如下图所示:
然后,进行
Shift + command+.显示出隐藏文件,如下图所示:
-
2、打开
.ios文件下的Runner.xcworkspace文件,在项目的TARGETS的Signing & Capabilities模块下进行项目的Signing下的配置。如下图所示:
-
3、使用
VsCode打开Flutter模块的项目,使用$flutter run进行第一次运行编译成功,如下图所示:
注意:OC 原始项目也需要设置 Signing & Capabilities 模块下进行项目的 Signing 下的配置。











