Flutter plugin for accessing the NFC features on Android and iOS.

Note: This plugin depends on NFCTagReaderSession (requires iOS 13.0 or later) and NfcAdapter#enableReaderMode (requires Android API level 19 or later).


Android Setup

iOS Setup


Handling Session

// Check availability
bool isAvailable = await NfcManager.instance.isAvailable();

// Start Session
  onDiscovered: (NfcTag tag) async {
    // Do something with an NfcTag instance.

// Stop Session

Handling Platform Tag

The following platform-tag-classes are available:

  • Ndef
  • FeliCa (iOS only)
  • Iso7816 (iOS only)
  • Iso15693 (iOS only)
  • MiFare (iOS only)
  • NfcA (Android only)
  • NfcB (Android only)
  • NfcF (Android only)
  • NfcV (Android only)
  • IsoDep (Android only)
  • MifareClassic (Android only)
  • MifareUtralight (Android only)
  • NdefFormatable (Android only)

Obtain an instance by calling the factory constructor from on the class. For example:

Ndef? ndef = Ndef.from(tag);

if (ndef == null) {
  print('Tag is not compatible with NDEF');

// Do something with an Ndef instance

Please see the API Doc for more details.


See this repo which is a Real-World-App demonstrates how to use this plugin.