调用 Jetpack API
从 Dart 代码使用最新的 Android API
在 Android 上运行的 Flutter 应用始终可以在 Android 发布最新 API 的当天就使用它们,无一例外。本页概述调用 Android 专用 API 的可用方式。
使用现有方案
#在大多数场景下,你可以使用插件(如下一节所示)调用原生 API,而无需自己编写自定义样板或胶水代码。
使用插件
#使用插件通常是访问原生 API 最简便的方式,无论你的 Flutter 应用运行在哪里。要使用插件,请访问 pub.dev 并搜索你需要的主题。大多数原生功能(包括访问 GPS、相机、计步器等常见硬件)都有成熟的插件支持。
有关向 Flutter 应用添加插件的完整指南,请参阅使用 package 文档。
并非所有原生功能都有插件支持,尤其是在刚发布时。若你需要的原生功能在 pub.dev 上没有对应 package,请继续阅读以下章节。
创建自定义方案
#并非所有场景和 API 都有现成方案支持;但幸运的是,你始终可以按需添加所需支持。以下章节介绍从 Dart 调用原生代码的两种方式。
通过 FFI 直接调用原生代码
#调用原生 API 最直接、最高效的方式是通过 FFI 直接调用 API。这会在编译时将你的 Dart 可执行文件链接到指定的原生代码,使你可通过少量胶水代码在 UI 线程直接调用。在大多数情况下,ffigen 或 jnigen 有助于编写这类胶水代码。
有关从 Flutter 应用直接调用原生代码的完整指南,请参阅 FFI 文档。
未来数月内,Dart 团队希望借助 FFI 方式直接支持调用原生 API,且开发者无需编写胶水代码。
添加 MethodChannel
#
MethodChannel
是 Flutter 应用调用任意原生代码的另一种方式。与上一步介绍的 FFI 方案不同,MethodChannel 始终为异步,是否重要取决于你的用例。与 FFI 及直接调用原生代码一样,使用 MethodChannel
需要少量胶水代码将 Dart 对象转换为原生对象,再转换回来。在大多数情况下,pkg:pigeon
有助于编写这类胶水代码。
有关向 Flutter 应用添加 MethodChannel 的完整指南,请参阅 MethodChannel 文档。
除非另有说明,本文档之所提及适用于 Flutter 3.44.0 版本。本页面最后更新时间:2026-06-04。查看文档源码 或者 为本页面内容提出建议。