iOS 项目集成 Flutter Module
分类于 Flutter
发表于 2020-11-15
作者: 灼灼团队
本文字数: 1803
阅读时长 ≈ 6.0 分钟

# 集成说明

# 术语说明

  • 宿主项目: 即 iOS 原生项目(Swift)
  • Flutter Module:即本项目代码,是 Flutter 实现的代码模块,可以做为一个模块集成到宿主项目当中,我们放在一个单独的代码仓库中

# 安装 Flutter 环境

首先,参考 Flutter 官网文档(flutter.dev) 在本地安装 Flutter 环境;

# 初始化 Flutter 项目

在 Flutter 项目目录下运行命令对 Flutter Module 进行初始化:

flutter pub get
1

# 配置 Podfile

修改宿主项目根目录下的 /Podfile 如下:

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
inhibit_all_warnings!
source 'https://cdn.cocoapods.org/'

# 修改为 Flutter Module 项目在你本地的相对目录
flutter_application_path = '../feixuan_flutter'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')

target 'FeiXuan' do
	use_frameworks!
   	pod 'RxSwift', '5.1.1'
    pod 'RxCocoa', '5.1.0'
    pod 'RxDataSources', '4.0.1'
    pod 'Alamofire', '4.9.1'
    pod 'ObjectMapper', '3.5.2'
    pod 'ZYBannerView', '= 1.1.4'
    pod 'MGJRouter', '0.10.0'
    pod 'MJRefresh', '3.2.0'
    pod 'SVProgressHUD', '2.2.5'
    pod 'WechatOpenSDK', '= 1.8.7'
    pod 'SnapKit', '4.2.0'
    pod 'Bugly', '2.5.2'
    pod 'MBProgressHUD', '= 1.1.0'
    
    # install flutter module
    install_all_flutter_pods(flutter_application_path)
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 更新 pod 依赖

在宿主项目中运行 pod install 更新依赖:

# 添加 MyFlutterViewController

MyFlutterViewController.swift 文件,添加至宿主项目中的目录: /FeiXuan/FeiFlutterViewController.swift

提示:与 AppDelegate.swift 同目录;

# 添加页面跳转代码

在宿主项目的相应位置添加[打开 Flutter 页面]的代码(如用户点击收藏夹时,跳转 Flutter 页面):

// ...
// 点击以下两个控件分别跳转到 收藏夹 和 浏览足迹页面
@IBOutlet weak var collectionWrapView: UIView!
@IBOutlet weak var browseTraceWrapView: UIView!
// ...
// 给上面两个控件添加点击事件回调
self.collectionWrapView.addGestureRecognizer(UITapGestureRecognizer(target: self, action:  #selector(self.openCollectionPage)))
self.browseTraceWrapView.addGestureRecognizer(UITapGestureRecognizer(target: self, action:  #selector(self.openBrowseTracePage)))

// ...
// 事件回调函数:打开收藏夹页面
@objc func openCollectionPage(sender : UITapGestureRecognizer) {
    let controller = FeiFlutterViewController.build(initialRoute: FeiFlutterViewController.PAGE_COLLECTION);
    self.navigationController?.pushViewController(controller, animated: true)
}

// 事件回调函数:打开浏览足迹页面
@objc func openBrowseTracePage(sender : UITapGestureRecognizer) {
        let controller = FeiFlutterViewController.build(initialRoute: FeiFlutterViewController.PAGE_BROWSE_TRACE);
        self.navigationController?.pushViewController(controller, animated: true)
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 常见问题

暂无

联系我们
联系电话:17681177133
联系邮箱:admin@zhuo-zhuo.com
公司地址:合肥市高新区习友路2666号 (习友路和石莲南路交叉口西北角)二期304室
官网
博客
皖ICP备20009670号-2
合肥灼灼信息技术有限公司 | Copyright © 2020-present zhuo-zhuo.com