JHHK

欢迎来到我的个人网站
行者常至 为者常成

11 混合开发

目录

介绍

一、混合开发

Flutter项目调用原生的某些功能

原生项目里面包含Flutter模块

FlutterViewController 创建再销毁之后会有8M的内存泄露
所以Flutter与原生页面之前不适合来回切换,FlutterViewController应该常驻内存

让flutter给原生传递数据,原生应该提供一个方法让flutter来调用,通过方法的参数把数据传过来
原生调用flutter也是同样的道理

Flutter调用原生

// flutter 侧代码
MethodChannel _methodChannel = MethodChannel('mine_page');
_methodChannel.invokeMapMethod('picture', {"param1":"hehe","param2":10});

//iOS侧代码
FlutterViewController *vc = (FlutterViewController*)self.window.rootViewController;
self.methodChannel = [FlutterMethodChannel methodChannelWithName:@"mine_page" binaryMessenger:vc];

[self.methodChannel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult  _Nonnull result) {
    if ([call.method isEqualToString:@"picture"]) {
      //如果有返回值,通过result将返回值传递会flutter
      result(xxx)
    }
}];

flutter application
Flutter应用程序是一个完整的移动应用程序,使用Flutter框架进行开发。它包括了从UI布局到业务逻辑的一切,是最终用户可以下载和使用的产品
开发完整的移动应用程序,可以运行在iOS和Android设备上
包含主函数、应用入口、各种页面、路由、状态管理等

flutter module
Flutter模块是一种可以嵌入到现有的Android或iOS应用中的Flutter代码

flutter package
Flutter包是一组共享的Dart代码库,可以被Flutter应用或其他包使用。它主要用于逻辑和UI组件的复用。

flutter plugin
Flutter插件是一个包含Dart代码和平台特定代码(如Java、Kotlin、Objective-C、Swift)的包。它允许Flutter应用访问平台(iOS和Android)提供的原生功能。


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.