Platform behaviour
| Platform | Implementation | Minimum requirement |
|---|---|---|
| iOS | Native CallKit framework | Real device only — CallKit does not run on the simulator |
| Android | Custom full-screen notification | API level 21 (Android 5.0) |
Starting with v2.5.0, the Android build requires Java SDK 17 or later. Make sure your development environment and CI pipeline use
jvmToolchain(17).Current version
The latest stable release is 3.0.0, published on pub.dev. Release highlights for 3.0.0:- Android now uses Plugin DSL
- Native Android callback support via
CallkitEventCallback - Improved plugin lifecycle management
Key features
Incoming call UI
Show a full-screen incoming call screen on Android and a native CallKit sheet on iOS, triggered from any app state.
Outgoing call support
Start outgoing calls that appear in the iOS phone history and trigger the correct lifecycle events on both platforms.
Customisable Android UI
Set background colour, background image, avatar, ringtone, action colours, text colours, and notification channel names for Android.
iOS CallKit integration
Configure handle type, audio session, DTMF, hold, grouping, and video support through native CallKit options.
Event stream
Listen to a broadcast stream of call lifecycle events: incoming, accepted, declined, ended, timed-out, and more.
PushKit / VoIP support
Integrates with iOS PushKit so your app can wake from a terminated state and display an incoming call screen.
Next steps
Installation
Add the package to your Flutter project and configure the Java SDK version.
Quickstart
Show your first incoming call screen in minutes with a complete working example.
