flutter 与原生 (iOS-swift)

一.创建关联module

1.创建原生项目iOS_demo,找到者自己的iOS工程目录

2.创建flutter_module(2种方式)

2.1.终端命令 cd 到原生项目iOS_demo同级目录下 创建flutter模块如flutter_native

flutter create --template module flutter模块名

2.2.AndroidStudio 创建Modlue

 

此时文件生成flutter_native文件夹 

3.flutter_module的pubspec.yaml下添加自己的依赖库,终端执行flutter pub get拉取依赖库

flutter pub get

4.原生iOS项目下pod init 创建Podfile 文件,Podfile添加flutter_module

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

# 添加模块所在路径
flutter_application_path = '../flutter_native'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')

target 'flutter_demo' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # 安装Flutter模块
  install_all_flutter_pods(flutter_application_path)

end

5.pod install 安装依赖

二. 代码

在iOS是原生项目AppDelegate导入flutter库

import Flutter
import FlutterPluginRegistrant

创建全局的引擎入口

    // 1. 创建 flutterEngine  name: 引擎名称
    lazy var flutterEngine = FlutterEngine(name: "Evan_Engine")


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // 2.启动引擎
        flutterEngine.run()
        return true
    }

在页面中进行跳转flutter

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.brown
        // Do any additional setup after loading the view.
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        //搜索到了很多中获取控制器跳转的方法,感觉这种获取 控制器跳转最为流畅 (自我感觉)
        let flutterEngine = (UIApplication.shared.delegate as! AppDelegate).flutterEngine
        let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)
        present(flutterViewController, animated: true, completion: nil)
    }

}

三.flutter热加载编写代码

此时flutter   module里面AndroidStudio 点击下图标,或者vscode终端输入 flutter attach

flutter attach

 后xcode 跑模拟器(1.注意与flutter attach是同一设备,设备处于激活状态 2.APP退出)

修改后注意保存是不能实时更新UI,需要终端输入R进行热更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter的MethodChannel是一种在Flutter原生平台(如iOS)之间进行通信的机制。它允许Flutter应用程序调用原生平台上的方法,并且还可以让原生平台调用Flutter的方法。 在iOS上使用MethodChannel,首先需要在原生平台(Objective-C或Swift)的代码中创建一个MethodChannel实例。这个实例需要一个唯一的通道名称,以便Flutter可以识别它。然后,可以使用该MethodChannel实例来注册方法,并指定一个方法名称和一个回调函数来处理该方法被调用时的逻辑。 在Flutter应用程序中,可以使用MethodChannel的实例来调用原生平台上注册的方法。可以指定方法名称和传递参数(如果需要)。MethodChannel会将这个方法调用发送到原生平台,并等待原生平台返回结果。一旦结果返回,可以在Flutter端处理它。 使用MethodChannel时需要注意一些事项。首先,MethodChannel只能传递符合平台限制的数据类型,如字符串、数字、布尔值等。如果需要传递复杂的数据结构,可以将数据转换为平台能够识别的格式(如JSON),然后再进行传递。其次,MethodChannel是一种异步通信机制,所以在处理方法调用时需要考虑异步操作和结果处理的情况。 总的来说,Flutter的MethodChannel是一种强大而灵活的机制,可以实现Flutter应用程序与原生平台之间的双向通信。它为开发人员提供了在FlutteriOS之间传递方法调用和数据的能力,可以实现更高级的功能和交互体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值