原生iOS工程引入Flutter

原生的oc写的代码,新的需求页面想要用flutter来写,那么如何在原生项目里加入flutter呢?

1、新建一个OC的原生工程项目。该项目是个简单的project的,只有一个页面和一个按钮,点击按钮present到flutter页面。如图

 

 2、创建一个flutter的Module项目,用来写flutter页面的。这里的module命名为flutter_module。

这里使用flutter命令创建

cd到相应的ios工程目录下,执行以下命令:

flutter create --template module flutter_module

相应的目录下出现flutter_module,说明创建成功

3、接着在原生的oc工程中引入cocoapod来做管理。

cd 到原生的oc工程中,执行 pod init

修改podfile

在podfile依赖文件的依赖部分添加如下内容:

 flutter_application_path = 'flutter_module' #创建的flutter模块名和路径。这里的路径是相对路径
 load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')

 然后在要集成flutter的target中添加

install_all_flutter_pods(flutter_application_path)

podfile的内容如下:

4、执行pod install 就可以把创建的flutter module和原生的oc项目关联起来了。

 

 到此,oc原生项目就和flutter module关联起来了。那么怎么才能在一个原生页面点击跳转到flutter页面呢?

在iOS原生的ViewController里有个按钮,点击跳转到flutter页面,我们只要在按钮事件中创建一个FlutterViewController,然后push过去就可以了,灰常的简单。show code:


注意,这里flutter页面的样式内容用的是创建module的时候,自带的页面,没有更改。当然也可以在flutter module里更改样式,显示你自己的页面。 

遇到的坑:

我用的flutter版本是2.8.0,在引入#import <Flutter/Flutter.h>之后,报头文件找不到的问题

终端执行flutter doctor

xcode那里有告警,我本地的cocoapods版本是1.8.3,升级cocoapods版本到1.10.0,头文件找不到问题解决。 

猜你喜欢

转载自blog.csdn.net/jdd92/article/details/121938342