nfc_hce_reader is Flutter plugin for reading NDEF messages on Android and iOS phones. Currently it reads messages from Android phones emulating tags via HCE. This plugin was inspired by this plugin, by this and this repos.
StreamSubscription<String> subscription = NfcHceReader.readNFCStream()
.listen((tag) {
setState(() {
_message = tag;
_stream?.cancel();
});
},
onDone: () {
setState(() {
_stream = null;
});
},
onError: (e) {
setState(() {
_stream = null;
});
});
setState(() {
_stream = subscription;
});
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _message = 'none';
StreamSubscription<String> _stream;
@override
void initState() {
super.initState();
initPlatformState();
}
Future<void> initPlatformState() async {
bool isInitialized;
try {
isInitialized = await NfcHceReader.initializeNFCReading();
_readNFC(context);
} on PlatformException {
}
if (!mounted) return;
}
void _readNFC(BuildContext context) {
StreamSubscription<String> subscription = NfcHceReader.readNFCStream()
.listen((tag) {
setState(() {
_message = tag;
_stream?.cancel();
});
},
onDone: () {
setState(() {
_stream = null;
});
},
onError: (e) {
setState(() {
_stream = null;
});
});
setState(() {
_stream = subscription;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Text('Running on: $_message\n'),
),
),
);
}
}
Add nfc_hce_reader
to your pubspec.yaml
dependencies:
nfc_hce_reader: ^0.0.1