// import 'dart:async'; // // import 'package:flutter/material.dart'; // // // void showNfcReader(BuildContext context, {Function onNcfScan}) { // showModalBottomSheet( // context: context, // enableDrag: false, // isDismissible: false, // shape: RoundedRectangleBorder( // borderRadius: BorderRadius.only(topLeft: Radius.circular(12), topRight: Radius.circular(12)), // ), // backgroundColor: Colors.white, // builder: (context) { // return NfcLayout( // onNcfScan: onNcfScan, // ); // }); // } // // class NfcLayout extends StatefulWidget { // Function onNcfScan; // // NfcLayout({this.onNcfScan}); // // @override // _NfcLayoutState createState() => _NfcLayoutState(); // } // // class _NfcLayoutState extends State { // StreamSubscription _stream; // bool _reading = false; // Widget mainWidget; // String nfcId; // // @override // void initState() { // super.initState(); // // setState(() { // // _reading = true; // // Start reading using NFC.readNDEF() // _stream = NFC.readNDEF(once: false, throwOnUserCancel: false, readerMode: NFCDispatchReaderMode()).listen((NDEFMessage message) { // setState(() { // _reading = true; // mainWidget = doneNfc(); // }); // Future.delayed(const Duration(milliseconds: 500), () { // _stream?.cancel(); // widget.onNcfScan(nfcId); // Navigator.pop(context); // }); // print("read NDEF id: ${message.id}"); // print("NFC Record " + message.payload); // print("NFC Record Lenght " + message.records.length.toString()); // print("NFC Record " + message.records.first.id); // print("NFC Record " + message.records.first.payload); // print("NFC Record " + message.records.first.data); // print("NFC Record " + message.records.first.type); // // widget.onNcfScan(message.id); // nfcId = message.id; // }, onError: (e) { // // Check error handling guide below // }); // }); // } // // @override // Widget build(BuildContext context) { // (mainWidget == null && !_reading) ? mainWidget = scanNfc() : mainWidget = doneNfc(); // return AnimatedSwitcher(duration: Duration(milliseconds: 500), child: mainWidget); // } // // Widget scanNfc() { // return Container( // key: ValueKey(1), // child: Column( // mainAxisSize: MainAxisSize.min, // children: [ // SizedBox( // height: 30, // ), // Text( // "Ready To Scan", // style: TextStyle( // fontWeight: FontWeight.bold, // fontSize: 24, // ), // ), // SizedBox( // height: 30, // ), // Image.asset( // "assets/images/nfc/ic_nfc.png", // height: MediaQuery.of(context).size.width / 3, // ), // SizedBox( // height: 30, // ), // Text( // "Approach an NFC Tag", // style: TextStyle( // fontSize: 18, // ), // ), // SizedBox( // height: 30, // ), // ButtonTheme( // minWidth: MediaQuery.of(context).size.width / 1.2, // height: 45.0, // buttonColor: Colors.grey[300], // shape: RoundedRectangleBorder( // borderRadius: BorderRadius.circular(6), // ), // child: RaisedButton( // onPressed: () { // _stream?.cancel(); // Navigator.pop(context); // }, // elevation: 0, // child: Text("CANCEL"), // ), // ), // SizedBox( // height: 30, // ), // ], // ), // ); // } // // Widget doneNfc() { // return Container( // key: ValueKey(2), // child: Column( // mainAxisSize: MainAxisSize.min, // children: [ // SizedBox( // height: 30, // ), // Text( // "Successfully Scanned", // style: TextStyle( // fontWeight: FontWeight.bold, // fontSize: 24, // ), // ), // SizedBox( // height: 30, // ), // Image.asset( // "assets/images/nfc/ic_done.png", // height: MediaQuery.of(context).size.width / 3, // ), // SizedBox( // height: 30, // ), // Text( // "Approach an NFC Tag", // style: TextStyle( // fontSize: 18, // ), // ), // SizedBox( // height: 30, // ), // ButtonTheme( // minWidth: MediaQuery.of(context).size.width / 1.2, // height: 45.0, // buttonColor: Colors.grey[300], // shape: RoundedRectangleBorder( // borderRadius: BorderRadius.circular(6), // ), // child: RaisedButton( // // onPressed: () { // // _stream?.cancel(); // // widget.onNcfScan(nfcId); // // Navigator.pop(context); // // }, // onPressed: null, // elevation: 0, // child: Text("DONE"), // ), // ), // SizedBox( // height: 30, // ), // ], // ), // ); // } // }