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
		
	
| 
								 
											4 years ago
										 
									 | 
							
								// 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,
							 | 
						||
| 
								 | 
							
								//           ),
							 | 
						||
| 
								 | 
							
								//         ],
							 | 
						||
| 
								 | 
							
								//       ),
							 | 
						||
| 
								 | 
							
								//     );
							 | 
						||
| 
								 | 
							
								//   }
							 | 
						||
| 
								 | 
							
								// }
							 |