您的位置 首页 科技

向现有应用添加 Flutter

Add-to-app

有些时候,一次性把现有应用重写至 Flutter 不实际。在这种情况下,您可以把 Flutter 当作一个单独的库或模块集成到现有的应用中。随后,这个模块可被导入到 Android 或 iOS (目前所支持的平台) 应用中,并利用 Flutter 来渲染应用的部分 UI,或者直接运行共享的 Dart 逻辑。

只需简单几步,您便可以在自己的应用中展现 Flutter 出色的开发效率和表达效果。

Flutter 1.12 已为一些基础场景提供 add-to-app 支持,允许开发者使用 add-to-app 每次为一个应用添加一个全屏 Flutter 页面。以下为该功能目前所知的局限:

  • 同时运行多个 Flutter 实例或在部分视图中运行实例可能会导致未定义行为。

  • 在后台模式下使用 Flutter 尚处于开发阶段。

  • 不支持将一个 Flutter 库打包到另一个可分享的库内,或者将多个 Flutter 库打包到同一个应用中。

支持特性

添加至 Android 应用

向现有应用添加 Flutter

  • 可通过在 Gradle 脚本中添加一个 Flutter SDK hook 来自动构建和导入 Flutter 模块。

  • 请将您的 Flutter 模块构建至通用 Android Archive (AAR) 文件中,从而实现与构建系统的集成并提高与 Jetifier 和 AndroidX 的兼容性。

  • 请通过 FlutterEngineAPI 启用并保留您的 Flutter 环境,以便让 Flutter 运行环境模块与 FlutterActivityFlutterFragment显示模块托偶。

  • Android Studio 里 Android/Flutter 协同编辑以及模块创建/导入向导。

  • 支持 Java 和 Kotlin 宿主应用。

  • Flutter 模块可通过 Flutter 插件与平台进行互动。如需取得最佳的 add-to-app 效果,请将 Android 插件迁移至 V2 插件 API。在 Flutter 1.12 中,由 Flutter 团队FlutterFire维护的大部分插件已完成迁移。

  • 支持通过 IDE 中的 flutter attach或命令行连接到包含 Flutter 的应用,以便调试 Flutter 或启用有状态的热重启。

  • Android Archive (AAR) 文件 https://developer.android.google.cn/studio/projects/android-library
  • FlutterEngine https://api.flutter.dev/javadoc/io/flutter/embedding/engine/FlutterEngine.html
  • FlutterActivity https://api.flutter.dev/javadoc/io/flutter/embedding/android/FlutterActivity.html
  • FlutterFragment

    https://api.flutter.dev/javadoc/io/flutter/embedding/android/FlutterFragment.html

  • Flutter 插件

    https://pub.dev/flutter/packages

  • 迁移至 V2 插件 API https://flutter.dev/docs/development/packages-and-plugins/plugin-api-migration
  • Flutter 团队 https://github.com/flutter/plugins/tree/master/packages
  • FlutterFire https://github.com/FirebaseExtended/flutterfire/tree/master/packages

添加至 iOS 应用

向现有应用添加 Flutter

  • 可通过 CocoaPods 在 Xcode 构建阶段内添加一个 Flutter SDK hook 来自动构建和导入 Flutter 模块。

  • 请将您的 Flutter 模块构建至一个通用 iOS 框架中,从而实现与构建系统的集成。

  • 请通过 FlutterEngineAPI 启用并保留您的 Flutter 环境,以便单独添加一个 FlutterViewController

  • 支持 Objective-C 和 Swift 宿主应用。

  • Flutter 模块可通过 Flutter 插件与平台进行互动。

  • 支持通过 IDE 中的 flutter attach或命令行连接到包含 Flutter 的应用,以便调试 Flutter 或启用有状态的热重启。

请前往 GitHub 网站探索 add-to-app 示例 repo,学习如何在 Android 和 iOS 项目中导入 Flutter 模块,打造精美的应用 UI。

  • iOS 框架 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html
  • FlutterEngine https://api.flutter.dev/objcdoc/Classes/FlutterEngine.html
  • FlutterViewController https://api.flutter.dev/objcdoc/Classes/FlutterViewController.html
  • Flutter 插件 https://pub.dev/flutter/packages
  • add-to-app 示例 repo https://github.com/flutter/samples/tree/master/experimental/add_to_app

现在开始

如果您想开始向现有应用添加 Flutter,请参阅以下项目集成指南:

  • Android https://flutter.dev/docs/development/add-to-app/android/project-setup
  • iOS https://flutter.dev/docs/development/add-to-app/ios/project-setup

API 使用方法

当您把 Flutter 集成到项目中后,请参阅以下开发者文档:

  • Android https://flutter.dev/docs/development/add-to-app/android/add-flutter-screen
  • iOS https://flutter.dev/docs/development/add-to-app/ios/add-flutter-screen

Flutter 开发者社区中文资源: https://flutter.cn

即刻开启 Flutter 跨平台开发之旅

想了解更多 Flutter 内容?

  • 在公众号首页发送关键词 “Flutter”,获取相关历史技术文章;
  • 还有更多疑惑?欢迎点击菜单 “联系我们” 反馈您在开发过程中遇到的问题。
街拍第一站https://www.jiepaik.cn/tech/16902.html

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

返回顶部