跳到主内容

利用 Apple 的系统 API 和框架

了解提供与 Apple 框架等效功能的 Flutter 插件。

如果你有 iOS 开发背景,可能需要找到与 Apple 系统库功能相同的 Flutter 插件。这可能包括访问设备硬件或与特定的框架(如 HealthKit)进行交互。

有关 SwiftUI 框架与 Flutter 对比的概览,请参阅 面向 SwiftUI 开发者的 Flutter 开发指南

Flutter 插件介绍

#

Dart 将包含平台特定代码的库称为 *插件 (plugins)*,它是“插件包”的缩写。在使用 Flutter 开发应用时,你使用 *插件* 与系统库进行交互。

在你的 Dart 代码中,你使用插件的 Dart API 来调用所使用系统库的本地代码。这意味着你可以编写代码来调用 Dart API。然后,该 API 会使其在插件支持的所有平台上都能正常工作。

要了解关于插件的更多信息,请参阅 使用包。尽管此页面链接了一些流行的插件,但你可以在 pub.dev 上找到成千上万个其他插件及其示例。下表并不认可任何特定插件。如果你找不到满足你需求的包,可以创建自己的包,或者在项目中直接使用平台通道 (platform channels)。要了解更多信息,请参阅 编写平台特定代码

将插件添加到你的项目中

#

要在原生项目中使用 Apple 框架,请将其导入到你的 Swift 或 Objective-C 文件中。

要添加 Flutter 插件,请在项目根目录下运行 flutter pub add package_name。这会将依赖项添加到你的 pubspec.yaml 文件中。添加依赖项后,在你的 Dart 文件中为该包添加一个 import 语句。

你可能需要更改应用设置或初始化逻辑。如果需要,请查阅该包在 pub.dev 上的“Readme”页面以获取详细信息。

Flutter 插件与 Apple 框架

#
用例Apple 框架或类Flutter 插件
访问照片库 使用 PhotosPhotosUI 框架的 PhotoKit 以及 UIImagePickerController image_picker
访问摄像头 使用 .camera sourceTypeUIImagePickerController image_picker
使用高级相机功能 AVFoundation camera
提供应用内购买 StoreKit in_app_purchase 1
处理支付 PassKit pay 2
发送推送通知 UserNotifications firebase_messaging 3
访问 GPS 坐标 CoreLocation geolocator
访问传感器数据4 CoreMotion sensors_plus
进行网络请求 URLSession http
存储键值对 @AppStorage 属性包装器和 NSUserDefaults shared_preferences
持久化到数据库 CoreData 或 SQLite sqflite
访问健康数据 HealthKit health
使用机器学习 CoreML google_ml_kit 5
文本识别 VisionKit google_ml_kit 5
语音识别 Speech speech_to_text
使用增强现实 ARKit ar_flutter_plugin
访问天气数据 WeatherKit weather 6
访问和管理联系人 Contacts contacts_service
在主屏幕显示快捷操作 UIApplicationShortcutItem quick_actions
将项目索引到 Spotlight 搜索 CoreSpotlight flutter_core_spotlight
配置、更新并与小部件通信 WidgetKit home_widget
使用 Siri/快捷指令自动化应用操作 AppIntents intelligence
  1. 同时支持 Android 上的 Google Play 商店和 iOS 上的 Apple App Store。

  2. 在 Android 上添加 Google Pay 支付,在 iOS 上添加 Apple Pay 支付。

  3. 使用 Firebase Cloud Messaging 并与 APNs 集成。

  4. 包含加速度计、陀螺仪等传感器。

  5. 使用 Google 的 ML Kit,支持文本识别、人脸检测、图像标注、地标识别和条形码扫描等多种功能。你还可以通过 Firebase 创建自定义模型。要了解更多信息,请参阅 在 Flutter 中使用自定义 TensorFlow Lite 模型 2

  6. 使用 OpenWeatherMap API。还有其他可以从不同天气 API 获取数据的包存在。