一: 官方建议使用pod方法
引入,因此我也采用pod方法
引用
二: 现有的原生项目迁入flutter
工程,不建议使用Android Studio
或者VSCode
创建,因为尝试创建后发现.iOS/Flutter
目录缺少podhelper.rb
脚本命令,会导致配置完pod
引入后报错
三: 建议使用命令行创建()
flutter create --template module my_flutter
其中 my_flutter
为定义的flutter工程名
这里我定义为bf_flutter_project
四: 使用命令行创建完后 在指定目录下生成的flutter
工程目录如下
image.png
五: 经过调研对比 Android Studio
和VSCode
都可以开发flutter
项目,但是个人建议使用Android Studio
,真机调试或者log控制台以及智能提示Android Studio
都有较大优势,极其好用
六: flutter
项目创建完毕后,那接下来原生项目配置通过pod
接入flutter
项目,podfile
配置如下:
// flutter_application_path 是flutter 工程的项目路径
flutter_application_path = '../../bf_flutter_project/bf_flutter_project'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
post_install do |installer|
flutter_post_install(installer) if defined?(flutter_post_install)
end
install_all_flutter_pods(flutter_application_path)
pod 目录上面配置路径 下面配置对路径的引用 如图所示:
image.png七: 执行即可
pod update --verbose --no-repo-update
八: 执行完毕后 pod
目录下会引入flutter1.0
和FlutterPluginRegistrant
如图:
image.png
九: 接入完毕后 编译下编辑成功后就可以愉快的玩耍了, 使用flutter
①: 在`AppDelegate`中导入头文件
import FlutterPluginRegistrant
import Flutter
②: 初始化`Flutter `引擎
public lazy var flutterEngine:FlutterEngine = {
let flutterEngine = FlutterEngine(name: "SDDailyStudyProject")
///iOS这个好像没啥用,只针对安卓来获取对应的context
GeneratedPluginRegistrant.register(with: flutterEngine)
return flutterEngine
}()
③: 启动` Flutter `引擎 这里 第一次初始化后可能会内存增加 ,官方暂时为优化这块 启动的时机 可做优化
flutterEngine.run()
④ : 这里在`AppDelegate `中提供一个类方法 来方便获取获取`flutterEngine` 方便后续的使用
public class func getFlutterEngine() -> FlutterEngine{
return (UIApplication.shared.delegate as!AppDelegate).flutterEngine
}
十: flutter
初始化完毕后,加载flutter
页面,使用Android Studio
开发一个列表页面 代码如下:
image.png
image.png
`ListView` 类似` iOS`中的`UITableView itemCount `类似为 数据源方法 返回多少个`cel`l, `itemBuilder`
类似为 数据源中的返回的`cell`,并且在`main`函数中配置路由映射
routes: ({"/list":(cxt){
return HomeList();
}}),
如上图所示:
十一: 这里就可以启动原生项目了,编写加载flutter
的代码
image.png
十二: 展示演示如下 (ps:每次编写完flutter代码可以直接运行
,加载即可看见效果)
image.png
十三: 关于热调试 保证Xcode
和Android Stuido
选中后同一个设备,在Android Stuido
的命令行中执行flutter attach
更改flutter
代码后 在控制台按 小r
或者大R
即可实现实时更新,不用重新运行设备
image.png
附件:
flutter项目地址:
http://172.16.117.224/zhouzunxian02/bf_flutter_project.git
跟主工程放同级目录即可, 主工程切换到feature/daily/380-flutter
执行pod update --verbose --no-repo-update
报错:
[!] Invalid `Podfile` file: cannot load such file -- /Users/lanlan/development/flutter/packages/flutter_tools/bin/podhelper.
解决:
cd到flutter工程目录下:
cd /Users/jh/Desktop/SDProject/bf_flutter_project/bf_flutter_project
1、执行:flutter clean
2、执行:flutter pub upgrade
然后cd
到主工程下:
3、宿主项目中,直接pod install
4、然后再去 clear 主工程 和 清理DerivedData下面的缓存。再执行:
pod update --verbose --no-repo-update
即可。
网友评论