{"repo":"gtbluesky/fusion","free":true,"listed":false,"github":"https://github.com/gtbluesky/fusion","clone":"git clone https://github.com/gtbluesky/fusion.git","description":"A Flutter plugin that manages hybrid stack on Android、iOS and HarmonyOS Next.","language":"Dart","stars":111,"topics":["flutter"],"license":"MIT","category":"mobile-apps","readme_excerpt":"Fusion OS Android iOS HarmonyOS --------------- ------------ ------- ----------- SDK 5.0(21)+ 11.0+ 5.0(13)+ 简介 Fusion 是新一代的混合栈管理框架，用于 Flutter 与 Native 页面统一管理，并支持页面通信、页面生命周期监听等功能。Fusion 即 融合 ，我们的设计初衷就是帮助开发者在使用 Flutter 与 Native 进行混合开发时尽量感受不到两者的隔阂，提升开发体验。 从 4.0 开始，Fusion 已完成纯鸿蒙平台（HarmonyOS Next/OpenHarmony，以下简称 HarmonyOS）的适配，开发者可以在Android、iOS、HarmonyOS上得到完全一致的体验。（HarmonyOS 的 Flutter SDK 可以在这里获取） Fusion 采用引擎复用方案，在 Flutter 与 Native 页面多次跳转情况下，APP 始终仅有一份 FlutterEngine 实例，因此拥有更好的性能和更低的内存占用。 Fusion 也是目前仅有的支持混合开发时应用在后台被系统回收后，所有Flutter页面均可正常恢复的混合栈框架。 开始使用 0、准备 在开始前需要按照 Flutter 官方文档，将 Flutter Module 项目接入到 Android、iOS、HarmonyOS 工程中。 1、初始化 Flutter 侧 使用 FusionApp 替换之前使用的 App Widget，并传入所需路由表，默认路由表和自定义路由表可单独设置也可同时设置。 P.S: kUnknownRoute 表示未定义路由 注意：如果项目使用了 flutter screenutil ，需要在 runApp 前调用 Fusion.instance.install() ，没有使用 flutter screenutil 则无须该步骤。 Android 侧 在 Application 中进行初始化，并实现 FusionRouteDelegate 接口 iOS 侧 在 AppDelegate 中进行初始化，并实现 FusionRouteDelegate 代理 HarmonyOS 侧 在 UIAbility 中进行初始化，并实现 FusionRouteDelegate 代理 注意：合规风险 在用户未授权前初始化 Flutter Engine 可能会存在合规风险，可以在用户未授权前进行预初始化（preInstall），在用户授权后再进行初始化（install），这样就可以规避相关风险。（iOS 端无需预初始化） 2、Flutter 容器 普通页面模式 Android 侧 通过 FusionActivity （或其子类） 创建 Flutter 容器，启动容器时需要使用 Fusion 提供的 buildFusionIntent 方法，其中参数 transparent 需设为 false。其 xml 配置参考如下（如果使用 FusionActivity 则不用配置）： iOS 侧 通过 FusionViewController （或其子类）创建 Flutter 容器， push 和 present 均支持。FusionViewController 默认隐藏了 UINavigationController。 在 iOS 中需要处理原生右滑退出手势和 Flutter 手势冲突的问题，解决方法也很简单：只需在自定义的 Flutter 容器中实现","default_branch":null,"files":null,"tree":[],"storefront":"/r/gtbluesky","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/gtbluesky/fusion/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}