🔌

プラットフォームチャネル

FlutterからネイティブコードSwift/Kotlin呼び出し

Flutterはほとんどのデータ UIを独自レンダリングエンジンで処理しますが、プラットフォーム固有機能(カメラ、センサー、決済など)にはネイティブコードが必要です。

MethodChannelでDart ↔ ネイティブ間で非同期メッセージをやり取りします。DartでinvokeMethod()を呼ぶとiOS(Swift/ObjC)またはAndroid(Kotlin/Java)のハンドラが実行されます。

ほとんどの場合、既製のpub.devパッケージ(camera、geolocatorなど)があるので、自分で書く機会は多くありません。

実装ステップ

1

Dart側:MethodChannel生成 + invokeMethod()呼び出し

2

iOS側:AppDelegateでFlutterMethodChannelハンドラ登録(Swift)

3

Android側:MainActivityでMethodChannelハンドラ登録(Kotlin)

4

エラーハンドリング:PlatformException処理 + プラットフォーム別分岐

メリット

  • ネイティブ機能に100%アクセス可能
  • 既存ネイティブコード資産の再活用

デメリット

  • iOSとAndroid両方のネイティブコードを各々作成する必要あり
  • Swift/Kotlinの知識が追加で必要

ユースケース

既存ネイティブSDKをFlutterアプリで使用 pub.devにないプラットフォーム機能を直接実装