跳到主內容

利用 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 獲取資料的包存在。