About

What Are Platform Channels? Calling Swift/Kotlin from Flutter

Camera, Bluetooth, and NFC via MethodChannel

Flutter handles most UI with its own rendering engine, but platform-specific features (camera, sensors, payments) require native code.

MethodChannel exchanges asynchronous messages between Dart and native. When Dart calls invokeMethod(), iOS (Swift/ObjC) or Android (Kotlin/Java) handlers execute.

In most cases, pre-built pub.dev packages (camera, geolocator, etc.) exist, so you rarely need to write your own.

Implementation Steps

1

Dart side: Create MethodChannel + call invokeMethod()

2

iOS side: Register FlutterMethodChannel handler in AppDelegate (Swift)

3

Android side: Register MethodChannel handler in MainActivity (Kotlin)

4

Error handling: Handle PlatformException + platform-specific branching

Pros

  • ✓ 100% access to native features
  • ✓ Reuse existing native code assets

Cons

  • ✗ Must write native code for both iOS and Android separately
  • ✗ Additional Swift/Kotlin knowledge required

Use Cases

Using existing native SDK in Flutter app Directly implementing platform features not on pub.dev
← How to Publish a Flutter App to the App Store and Google Play