🔌
플랫폼 채널
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에 없는 플랫폼 기능 직접 구현