🔌
プラットフォームチャネル
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にないプラットフォーム機能を直接実装