phone_state 4.0.1 copy "phone_state: ^4.0.1" to clipboard
phone_state: ^4.0.1 copied to clipboard

This plugin allows you to know quickly and easily if your Android or iOS device is receiving a call and to know the status of the call.

DESCRIPTION #

This plugin allows you to know quickly and easily if your Android or iOS device is receiving a call and to know the status of the call.

PAY ATTENTION #

  • In the iOS simulator doesn't work
  • The caller phone number is only available on Android, not iOS
  • This plugin reports phone call state only. It does not answer, reject, end, or record calls, and it does not change whether other packages can capture call audio.
  • Android detects system telephony call state only. Third-party VoIP calls from apps such as Telegram or WhatsApp are not supported. iOS CallKit behavior can differ by app.
  • The iOS implementation uses CallKit. For apps distributed in regions where CallKit is restricted, including China App Store review contexts, confirm availability and territory rules with Apple before submission.
  • PhoneState.stream requires the app process to be running with an active Flutter engine and listener. It does not send callbacks after the app is terminated.
  • On Android, if PhoneState.stream does not emit, confirm READ_PHONE_STATE is declared and granted at runtime. Some OEM battery or background restrictions, including MIUI settings on Xiaomi devices, can also delay or block callbacks.

Buy Me A Coffee

HOW TO INSTALL #

Flutter

Note: This version requires Flutter >= 3.44.0 and Dart >= 3.12.2. Add phone_state to your app's pubspec.yaml, not to this package's pubspec.yaml. Your app/package name must be different from phone_state.

dependencies:
  flutter:
    sdk: flutter
  phone_state: 4.0.1

Android: Added permission on manifest

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />

READ_PHONE_STATE is required. READ_CALL_LOG is optional and only needed for caller phone numbers.

Warning: Adding READ_CALL_LOG permission, your app will be removed from the Play Store if you don't have a valid reason to use it. Read more.

iOS: Not needed permissions on info.plist

HOW TO USE #

Get stream phone state status #

StreamBuilder<PhoneState>(
  stream: PhoneState.stream,
  ...

Troubleshooting package conflicts #

If phone_state stops receiving updates after adding another package:

  • Confirm the required Android runtime permissions are granted before listening. READ_PHONE_STATE is required, and READ_CALL_LOG is only needed for caller phone numbers.
  • Keep a single active PhoneState.stream listener for each app flow. Cancel the previous subscription before starting another one when screens, services, or background handlers change.
  • When reporting a conflict, include the other package names, platform versions, a minimal reproduction, and the relevant Flutter, Logcat, or Xcode logs.

SCREENSHOT #

Write me in the GitHub issues the new features you need and, if they are approved of course, I will implement them as soon as I can.

139
likes
160
points
22.3k
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

This plugin allows you to know quickly and easily if your Android or iOS device is receiving a call and to know the status of the call.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

collection, flutter

More

Packages that depend on phone_state

Packages that implement phone_state