flutter-interoperating-with-native-apis

Installation
Summary

Access device-specific native APIs on Android, iOS, and web from Flutter code.

  • Supports three integration approaches: FFI for direct C/C++ binding, Platform Channels (with Pigeon for type safety) for calling Kotlin/Swift/Objective-C, and Platform Views for embedding native UI components
  • FFI uses dart:ffi with automatic build compilation via build.dart hooks; requires extern "C" symbols and package:ffigen for Dart binding generation
  • Platform Channels provide asynchronous messaging between Dart and native code; Pigeon generates type-safe boilerplate and handles threading requirements automatically
  • Platform Views embed native Android View or iOS UIView components; Android supports Hybrid Composition (fidelity) or Texture Layer (performance) modes
  • Web support includes WebAssembly compilation with multi-threading headers and JS interop via package:web and dart:js_interop (avoiding deprecated dart:html and dart:js)
SKILL.md

Integrating Platform-Specific Code in Flutter

Contents

Core Concepts & Terminology

  • FFI (Foreign Function Interface): The dart:ffi library used to bind Dart directly to native C/C++ APIs.
  • Platform Channel: The asynchronous message-passing system (MethodChannel, BasicMessageChannel) connecting the Dart client (UI) to the host platform (Kotlin/Java, Swift/Objective-C, C++).
  • Pigeon: A code-generation tool that creates type-safe Platform Channels.
  • Platform View: A mechanism to embed native UI components (e.g., Android View, iOS UIView) directly into the Flutter widget tree.
  • JS Interop: The modern, Wasm-compatible approach to interacting with JavaScript and DOM APIs using package:web and dart:js_interop.

Binding to Native C/C++ Code (FFI)

Use FFI to execute high-performance native code or utilize existing C/C++ libraries without the overhead of asynchronous Platform Channels.

Related skills
Installs
8.3K
Repository
flutter/skills
GitHub Stars
1.9K
First Seen
Mar 13, 2026