一: 官方建議使用pod方法引入,因此我也采用pod方法引用
二:原生項目接入flutter工程。
不建議使用Android Studio或者VSCode創(chuàng)建,因為嘗試創(chuàng)建后發(fā)現(xiàn).iOS/Flutter目錄缺少podhelper.rb腳本命令,會導(dǎo)致配置完pod引入后報錯,建議使用命令行創(chuàng)建。
三: 建議使用命令行創(chuàng)建
創(chuàng)建的flutter工程目錄最好和iOS原生項目目錄一個級別文件目錄下:

//其中`my_flutter`為定義的`flutter工程名` 這里我定義為`flutter_project `
flutter create -t module flutter_project
四: 使用命令行創(chuàng)建完后 在指定目錄下生成的flutter工程目錄如下

五: 經(jīng)過調(diào)研對比 Android Studio和VSCode都可以開發(fā)flutter項目,但是個人建議使用Android Studio,真機調(diào)試或者log控制臺以及智能提示Android Studio都有較大優(yōu)勢,極其好用,我這里用的VSCode
注意:這個時候可以去看看 VSCode創(chuàng)建flutter項目哪篇文章,主要看如何先讓VSCode安裝好插件,如何VSCode跑起來看看效果。最后可以在VSCode的下面的終端里面執(zhí)行:flutter pub get命令,安裝插件,此命令也可以不執(zhí)行。
六: flutter項目創(chuàng)建完畢后。
1,打開新建的flutter項目,運行項目:
flutter run
確認無報錯。
2,那接下來SSB-iOS原生項目配置通過pod接入flutter項目,SSB-iOS項目的podfile配置如下:
pod目錄上面配置路徑下面配置對路徑的引用,如圖所示:

SSB-iOS項目的podfile配置具體代碼如下:
platform :ios, '12.0'
# flutter_application_path 是flutter 工程的項目路徑
flutter_application_path = '../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
# 以及
target 'SSBApp' do
use_frameworks!
# 這邊引入
install_all_flutter_pods(flutter_application_path)
end
七: 原生項目,執(zhí)行即可
1,原生項目,pod執(zhí)行
// cd 到iOS原生項目目錄下執(zhí)行:
pod install
// 或者
pod update --verbose --no-repo-update
2,原生項目,引入flutter配置

AppDelegate.h
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#pragma mark -- flutter配置3
@import Flutter;
#import <FlutterPluginRegistrant/GeneratedPluginRegistrant.h>
@interface AppDelegate : FlutterAppDelegate //UIResponder <UIApplicationDelegate>
@property (nonatomic, strong) FlutterEngine *flutterEngine;
@property (readonly, strong) NSPersistentContainer *persistentContainer;
- (void)saveContext;
@end

AppDelegate.m
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#pragma mark -- flutter配置4
self.flutterEngine = [[FlutterEngine alloc] initWithName:@"my flutter engine"];
[self.flutterEngine run];
[GeneratedPluginRegistrant registerWithRegistry:self.flutterEngine];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
八: 執(zhí)行完畢后 pod目錄下會引入flutter1.0和FlutterPluginRegistrant如圖:

然后可以在VSCode下面的終端里面執(zhí)行
flutter run
如果真機運行報錯:

那么需要把
flutter里面的iOS工程Runner項目的bundle Identifier改下,改成符合你的開發(fā)者開發(fā)者賬號格式
改成示例

注意:
1,flutter工程每次修改后,都需要進行
flutter run
2,flutter工程每次修改后,原生主工程每次運行,都需要執(zhí)行一下:
pod install
運行原生主工程,報錯
報錯1:Module 'Flutter' not found

解決:

Flutter工程
flutter clean
flutter pub get
SSB-iOS原生項目工程
pod install
報錯2:
Sandbox: rsync.samba(82572) deny(1) file-write-create /Users/yinxia/Library/Developer/
Xcode/DerivedData/iOSProject-dinnfnutvwrmoefkwmfpwlrafovp/Build/Products/Debug-iphonesimulator/Flutter.framework
//以及
[ +5 ms] Flutter failed to write to a file at "/Users/yinxia/Library/Developer/Xcode/DerivedData/
iOSProject-dinnfnutvwrmoefkwmfpwlrafovp/Build/Products/Debug-iphonesimulator/.last_build_id".
解決:在項目的構(gòu)建設(shè)置 > 構(gòu)建選項(BuildSettings)> 沙盒(User Script Sandboxing)' 改成NO

九: 那么iOS和flutter如何混編呢?iOS跳轉(zhuǎn)flutter頁面并傳參,flutter跳轉(zhuǎn)iOS頁面并傳參,如何做?
有多種種方式,其中一種就是flutter_boost
,我們用這種就行,看下一篇文章?!疚澹篎lutter與原生通信的方式簡介】