You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			195 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			195 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Dart
		
	
// 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<NfcLayout> {
 | 
						|
//   StreamSubscription<NDEFMessage> _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: <Widget>[
 | 
						|
//           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: <Widget>[
 | 
						|
//           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,
 | 
						|
//           ),
 | 
						|
//         ],
 | 
						|
//       ),
 | 
						|
//     );
 | 
						|
//   }
 | 
						|
// }
 |