Interoperates with native platform APIs on Android, iOS, and the web. Use when accessing device-specific features not available in Dart or calling existing…
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) Integrating Platform-Specific Code in Flutter Contents Core Concepts & Terminology Binding to Native C/C++ Code (FFI) Implementing Platform Channels & Pigeon Hosting Native Platform Views Integrating Web Content & Wasm Workflows 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.
don't have the plugin yet? install it then click "run inline in claude" again.