參考:https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps
本文代碼:https://github.com/yonglinwang002/TestFlutter
一、生成Flutter 模塊
假設(shè)已有工程 TestFlutter
$ cd TestFlutter/
$ flutter create -t module flutter_library
執(zhí)行后會生成
flutter_library 目錄
結(jié)構(gòu)如下
二、使用宿主工程依賴Flutter模塊
在主工程中增加一個 Group 如名為Flutter
生成后結(jié)構(gòu)
TestFlutter/
? ? Flutter/
? ? ? Flutter.xcconfig
? ? TestFlutter/
? ? ? AppDelegate.h
? ? ? AppDelegate.m
? ? ? :
? ? ? Debug.xcconfig
? ? ? Release.xcconfig
編輯Flutter.xcconfig 文件
#include "../flutter_library/.ios/Flutter/Generated.xcconfig"
ENABLE_BITCODE=NO
Debug.xcconfig文件
#include "../Flutter/Flutter.xcconfig"
Release.xcconfig文件
#include "../Flutter/Flutter.xcconfig"
FLUTTER_BUILD_MODE=release
使用xcconfig相應(yīng)配置
三辑鲤、設(shè)置執(zhí)行Flutter的腳本
在Run Script中增加
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
四、執(zhí)行腳本并把Framework加入工程
Cmd+B欠啤,Build工程慢味,編譯后,F(xiàn)lutter目錄中生成如下
把其中的flutter_assets 目錄以及Flutter.framework加入到工程的Flutter Group中
注意添加flutter_assets目錄時汰蜘,選擇 Create forlder references !!!! (我就是這里沒注意辑奈,后面始終出錯)
五苛茂、添加調(diào)用Flutter語句
這里就沒有什么好說的了已烤,
#import "Flutter/Flutter.h"
- (void)viewDidLoad {
??? [super viewDidLoad];
??? [self.view setBackgroundColor:[UIColor orangeColor]];
???
??? UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
??? [button addTarget:self
?????????????? action:@selector(handleButtonAction)
???? forControlEvents:UIControlEventTouchUpInside];
??? [button setTitle:@"Press me" forState:UIControlStateNormal];
??? [button setBackgroundColor:[UIColor blueColor]];
??? button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
??? [self.view addSubview:button];
???
??? // Do any additional setup after loading the view, typically from a nib.
}
- (void)handleButtonAction {
??? FlutterViewController* flutterViewController = [[FlutterViewController alloc] init];
??? flutterViewController.view.frame = [UIScreen mainScreen].bounds;
//??? [flutterViewController setInitialRoute:@"route1"];//如果設(shè)置了router,可以到不同的頁面
??? [self presentViewController:flutterViewController animated:NO completion:nil];
}
Cmd+R吧味悄,就出來了
這里說一個熱重載的方法 (Hot Reload) 在終端上
$ cd flutter_library
$ flutter attach
Waiting for a connection from Flutter on iPhone X...
然后草戈,在XCode中 Cmd+R 執(zhí)行,待進(jìn)入到FlutterView頁面時侍瑟,
終端變成如下
這時如果修改了dart文件 唐片,再按r就可以重新載入
q 退出