iOS?項目嵌入Flutter?運(yùn)行(最新推薦)
一 創(chuàng)建Flutter 模塊
命令行
flutter create --template module my_flutter
創(chuàng)建完成后,該模塊和普通的Flutter項目一直,可以通過Android Studio或VSCode打開、開發(fā)、運(yùn)行;
- 和之前項目不同的iOS和Android項目是一個隱藏文件,并且我們通常不會單獨打開它們再來運(yùn)行;
- 它們的作用是將Flutter Module進(jìn)行編譯,之后繼承到現(xiàn)有的項目中
my_flutter/ ├── .ios/ ├── .android/ ├── lib/ │ └── main.dart ├── test/ └── pubspec.yaml

二 嵌入到iOS 項目
主要是通過pod 進(jìn)行設(shè)置,之后pod install
注意my_flutter 的路徑對不對
platform :ios, '12.0' # 添加模塊所在路徑 flutter_application_path = '../my_flutter' load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') target 'FlutterHybridDemo' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # 安裝Flutter模塊 install_all_flutter_pods(flutter_application_path) # Pods for FlutterHybridDemo end post_install do |installer| flutter_post_install(installer) if defined?(flutter_post_install) end
三 iOS 項目中調(diào)用
為了在既有的iOS應(yīng)用中展示Flutter頁面,需要啟動 Flutter Engine和 FlutterViewController
AppDelegate 中設(shè)置代碼
import UIKit
import FlutterPluginRegistrant
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
// 1.創(chuàng)建一個FlutterEngine對象
lazy var flutterEngine = FlutterEngine(name:"my flutter engine")
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
// 2 啟動
flutterEngine.run()
return true
}在ViewControlelr 設(shè)置的代碼
import UIKit
import Flutter
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let btn = UIButton(type: UIButton.ButtonType.custom)
btn.setTitle("加載flutter", for: UIControl.State.normal)
btn.frame = CGRect(x: 50, y: 50, width: 200, height: 50)
btn.backgroundColor = UIColor.blue
btn.addTarget(self, action: #selector(showFlutter), for: UIControl.Event.touchUpInside)
view.addSubview(btn)
}
@objc func showFlutter(){
let flutterEngine = (UIApplication.shared.delegate as! AppDelegate).flutterEngine
let flutterController = FlutterViewController(engine:flutterEngine, nibName: nil, bundle: nil)
present(flutterController, animated: true)
}
}顯示的結(jié)果 順利加載出flutter 的頁面

到此這篇關(guān)于iOS 項目嵌入Flutter 運(yùn)行的文章就介紹到這了,更多相關(guān)iOS 項目嵌入Flutter內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IOS開發(fā)實現(xiàn)手機(jī)震動的提示實例代碼
這篇文章主要介紹了IOS開發(fā)實現(xiàn)手機(jī)震動的提示實例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04
iOS開發(fā)中一些手寫控件及其相關(guān)屬性的使用
這篇文章主要介紹了iOS開發(fā)中一些手寫控件及其相關(guān)屬性的使用,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12
iOS實現(xiàn)不規(guī)則Button點擊效果實例代碼
這篇文章主要給大家介紹了關(guān)于iOS實現(xiàn)不規(guī)則Button點擊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

