nfc_manager 1.3.2+3 
nfc_manager: ^1.3.2+3 copied to clipboard
A Flutter plugin to manage the NFC features. Supported on both Android and iOS.
nfc_manager #
A Flutter plugin to manage the NFC features. Supported on both Android and iOS.
Setup #
Android Setup #
- Add android.permission.NFC to your 
AndroidMenifest.xml. 
iOS Setup #
- 
Add Near Field Communication Tag Reader Session Formats Entitlements to your entitlements.
 - 
Add NFCReaderUsageDescription to your
Info.plist. - 
Add com.apple.developer.nfc.readersession.felica.systemcodes and com.apple.developer.nfc.readersession.iso7816.select-identifiers to your
Info.plistas needed. 
Usage #
Managing Session #
// Check availability
bool isAvailable = await NfcManager.instance.isAvailable();
// Start session and register callback.
NfcManager.instance.startTagSession(
  onDiscovered: (NfcTag tag) async {
    // Manipulating tag
  },
);
// Stop session and unregister callback.
NfcManager.instance.stopSession();
Manipulating NDEF #
// Obtain an Ndef instance from tag
Ndef ndef = Ndef.fromTag(tag);
if (ndef == null) {
  print('Tag is not ndef');
  return;
}
// You can get an NdefMessage instance cached at discovery time
NdefMessage cachedMessage = ndef.cachedMessage;
// Create an NdefMessage instance you want to write.
NdefMessage message = NdefMessage([
  NdefRecord.createText('Hello'),
  NdefRecord.createUri(Uri.parse('https://flutter.cn')),
  NdefRecord.createMime('text/plain', Uint8List.fromList('Hello'.codeUnits)),
  NdefRecord.createExternal('mydomain', 'mytype', Uint8List.fromList('mydata'.codeUnits)),
]);
if (!ndef.isWritable) {
  print('Tag is not ndef writable');
  return;
}
// Write an NdefMessage
try {
  await ndef.write(message);
} catch (e) {
  // handle error
}
Manipulating Platform-Specific-Tag #
The following platform-specific-tag classes are available:
iOS
- MiFare
 - FeliCa
 - ISO15693
 - ISO7816
 
Android
- NfcA
 - NfcB
 - NfcF
 - NfcV
 - IsoDep
 
Usage
MiFare miFare = MiFare.fromTag(tag);
if (miFare == null) {
  print('MiFare is not available on this tag');
  return;
}
Uint8List response = await miFare.sendMiFareCommand(...);
Example App #
See this repo which is a Real-World-App demonstrates how to use this plugin.