Flutter集成到已有iOS工程的方法步驟
前言
之前寫過(guò)一篇介紹flutter集成到Android工程的文章,這次總結(jié)記錄一下自己把flutter集成到iOS的流程,以及遇到的問(wèn)題以及和解決方法供大家參考。
創(chuàng)建flutter_module
要在iOS工程中集成flutter,首先我們需要?jiǎng)?chuàng)建一個(gè)flutter_module,創(chuàng)建的方法有兩種:
使用Android studio創(chuàng)建
使用Android studio創(chuàng)建在上一篇新版Flutter集成到已有Android項(xiàng)目 中有介紹,這里不再贅述。
使用flutter命令創(chuàng)建
在指定目錄下執(zhí)行如下命令
flutter create --template module flutter_module
修改Podfile文件
在Podfile文件中的依賴部分添加如下內(nèi)容
flutter_application_path'/Users/liuxinye/Desktop/WorkPro/AppGroup/platforms/xagf_flutter' load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
然后在要集成flutter的target中添加
install_all_flutter_pods(flutter_application_path)
最后為iOS工程執(zhí)行 pod install 即完成了了flutter_module的集成
使用flutter
接下來(lái)我們介紹如何在iOS工程中啟用flutter進(jìn)行開(kāi)發(fā)
初始化FlutterEngine
首先我們需要在AppDelegate中持有一個(gè)FlutterEngine,代碼如下:
@import Flutter @interface AppDelegate @property (strong, nonatomic) FlutterEngine *flutterEngine; @end
然后我們需要在適當(dāng)?shù)臅r(shí)機(jī)啟動(dòng) FlutterEngine
+(FlutterEngine *)initFlutter:(NSString*)entry :(NSString*)dartFile{
FlutterEngine *flutterEngine =
((AppDelegate *)UIApplication.sharedApplication.delegate).flutterEngine;
if (flutterEngine) {
return flutterEngine;
}else{
flutterEngine = [[FlutterEngine alloc] initWithName:@"my flutter engine"];
if(dartFile&&entry){
//指定dartFile文件中entry方法啟動(dòng)flutter
[flutterEngine runWithEntrypoint:entry libraryURI:dartFile];
}else if (entry){
//指定main.dart中方法名為entry的方法啟動(dòng)
[flutterEngine runWithEntrypoint:entry];
}else{
//執(zhí)行默認(rèn)的main.dart文件中的main方法進(jìn)行啟動(dòng)
[flutterEngine run];
}
return flutterEngine;
}
}
這里涉及了三個(gè)Flutter的啟動(dòng)方式,三種方式的區(qū)別在代碼中給出了注釋。
當(dāng)然,我們也可以在啟動(dòng)flutter時(shí)初始化路由。
[[flutterEngine navigationChannel] invokeMethod:@"setInitialRoute"
arguments:@"/index"];
至此我們就完成了 FlutterEngine 的啟動(dòng)工作,接下來(lái)我們來(lái)創(chuàng)建用來(lái)顯示Flutter界面的 ViewContoller 。
創(chuàng)建FlutterViewController
[GeneratedPluginRegistrant registerWithRegistry:flutterEngine];
FlutterViewController *flutterViewController =
[[FlutterViewController alloc] initWithEngine:flutterEngine nibName:nil bundle:nil];
以UIView的方式使用
如果想要以 UIView 的方式使用,只需要使用 UIView *myFlutterView=flutterViewController.view 即可。
遇到的問(wèn)題
此次集成Flutter到iOS工程還是比較順利的,我在集成過(guò)程中只遇到了一個(gè)問(wèn)題,在完成以上集成工作后運(yùn)行iOS工程,出現(xiàn)了找不到 lib/main.dart 的報(bào)錯(cuò),我百度了很久無(wú)法解決,最后嘗試關(guān)閉xcode,刪除 Pods 文件夾和 Podfile.lock 文件重新執(zhí)行 pod install 解決了此問(wèn)題。
到此這篇關(guān)于Flutter集成到已有iOS工程的方法步驟的文章就介紹到這了,更多相關(guān)Flutter集成到已有iOS 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- ios開(kāi)發(fā)Flutter構(gòu)建todo?list應(yīng)用
- Flutter?Module添加到iOS項(xiàng)目示例詳解
- Flutter iOS開(kāi)發(fā)OC混編Swift動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)問(wèn)題填坑
- ios開(kāi)發(fā)Flutter之?dāng)?shù)據(jù)存儲(chǔ)
- Flutter項(xiàng)目在 iOS14 啟動(dòng)崩潰的解決方法
- Flutter調(diào)用Android和iOS原生代碼的方法示例
- iOS?項(xiàng)目嵌入Flutter?運(yùn)行(最新推薦)
相關(guān)文章
Android編程之Button控件配合Toast控件用法分析
這篇文章主要介紹了Android編程之Button控件配合Toast控件用法,結(jié)合實(shí)例形式分析了Button控件及Toast控件的功能及具體使用技巧,需要的朋友可以參考下2015-12-12
Android編程簡(jiǎn)單獲取網(wǎng)絡(luò)上的圖片
這篇文章主要介紹了Android編程簡(jiǎn)單獲取網(wǎng)絡(luò)上的圖片,結(jié)合實(shí)例形式分析了Android獲取網(wǎng)絡(luò)圖片及加載顯示的相關(guān)操作步驟與注意事項(xiàng),需要的朋友可以參考下2016-10-10
Android編程實(shí)現(xiàn)自定義分享列表ACTION_SEND功能的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)自定義分享列表ACTION_SEND功能的方法,結(jié)合實(shí)例形式詳細(xì)分析了自定義分享列表功能的步驟與具體操作技巧,需要的朋友可以參考下2017-02-02
Android實(shí)現(xiàn)仿微軟系統(tǒng)加載動(dòng)畫效果
這篇文章主要介紹了Android實(shí)現(xiàn)仿微軟系統(tǒng)加載動(dòng)畫效果的方法,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-04-04
Android 快速繪制一個(gè)圓角矩形的實(shí)例
下面小編就為大家分享一篇Android 快速繪制一個(gè)圓角矩形的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
Android中選項(xiàng)菜單(OptionMenu)的創(chuàng)建方法
這篇文章主要介紹了Android中選項(xiàng)菜單(OptionMenu)的創(chuàng)建方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01

