Repository: okadan/flutter-nfc-manager Branch: main Commit: 262451431578 Files: 92 Total size: 510.8 KB Directory structure: gitextract_7nrhxl8x/ ├── .gitignore ├── .metadata ├── CHANGELOG.md ├── LICENSE ├── README.md ├── analysis_options.yaml ├── android/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── settings.gradle │ ├── settings.gradle.kts │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── dev/ │ │ └── flutter/ │ │ └── plugins/ │ │ └── nfcmanager/ │ │ ├── NfcManagerPlugin.kt │ │ └── Pigeon.kt │ └── test/ │ └── kotlin/ │ └── dev/ │ └── flutter/ │ └── plugins/ │ └── nfcmanager/ │ └── NfcManagerPluginTest.kt ├── example/ │ ├── .gitignore │ ├── README.md │ ├── analysis_options.yaml │ ├── android/ │ │ ├── .gitignore │ │ ├── app/ │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ ├── debug/ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin/ │ │ │ │ │ └── dev/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── nfcmanagerexample/ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res/ │ │ │ │ ├── drawable/ │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable-v21/ │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── values/ │ │ │ │ │ └── styles.xml │ │ │ │ └── values-night/ │ │ │ │ └── styles.xml │ │ │ └── profile/ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle.kts │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ └── settings.gradle.kts │ ├── ios/ │ │ ├── .gitignore │ │ ├── Flutter/ │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Runner/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ ├── Contents.json │ │ │ │ └── README.md │ │ │ ├── Base.lproj/ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ ├── Runner-Bridging-Header.h │ │ │ └── SceneDelegate.swift │ │ ├── Runner.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata/ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata/ │ │ │ └── xcschemes/ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ │ └── RunnerTests/ │ │ └── RunnerTests.swift │ ├── lib/ │ │ └── main.dart │ └── pubspec.yaml ├── ios/ │ ├── .gitignore │ ├── nfc_manager/ │ │ ├── Package.swift │ │ └── Sources/ │ │ └── nfc_manager/ │ │ ├── NfcManagerPlugin.swift │ │ └── Pigeon.swift │ └── nfc_manager.podspec ├── lib/ │ ├── ndef_record.dart │ ├── nfc_manager.dart │ ├── nfc_manager_android.dart │ ├── nfc_manager_ios.dart │ └── src/ │ ├── nfc_manager/ │ │ └── nfc_manager.dart │ ├── nfc_manager_android/ │ │ ├── nfc_manager.dart │ │ ├── nfc_manager_platform.dart │ │ ├── pigeon.dart │ │ ├── pigeon.g.dart │ │ └── tags/ │ │ ├── iso_dep.dart │ │ ├── mifare_classic.dart │ │ ├── mifare_ultralight.dart │ │ ├── ndef.dart │ │ ├── ndef_formatable.dart │ │ ├── nfc_a.dart │ │ ├── nfc_b.dart │ │ ├── nfc_barcode.dart │ │ ├── nfc_f.dart │ │ ├── nfc_v.dart │ │ └── tag.dart │ └── nfc_manager_ios/ │ ├── nfc_manager.dart │ ├── nfc_manager_platform.dart │ ├── pigeon.dart │ ├── pigeon.g.dart │ └── tags/ │ ├── felica.dart │ ├── iso15693.dart │ ├── iso7816.dart │ ├── mifare.dart │ └── ndef.dart ├── pigeon/ │ ├── android.dart │ └── ios.dart └── pubspec.yaml ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # Miscellaneous *.class *.log *.pyc *.swp .DS_Store .atom/ .build/ .buildlog/ .history .svn/ .swiftpm/ migrate_working_dir/ # IntelliJ related *.iml *.ipr *.iws .idea/ # The .vscode folder contains launch configuration and tasks you configure in # VS Code which you may wish to be included in version control, so this line # is commented out by default. #.vscode/ # Flutter/Dart/Pub related # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. /pubspec.lock **/doc/api/ .dart_tool/ .flutter-plugins-dependencies /build/ /coverage/ ================================================ FILE: .metadata ================================================ # This file tracks properties of this Flutter project. # Used by Flutter tool to assess capabilities and perform upgrades etc. # # This file should be version controlled and should not be manually edited. version: revision: "db50e20168db8fee486b9abf32fc912de3bc5b6a" channel: "stable" project_type: plugin # Tracks metadata for the flutter migrate command migration: platforms: - platform: root create_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a base_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a - platform: android create_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a base_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a - platform: ios create_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a base_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a # User provided section # List of Local paths (relative to this file) that should be # ignored by the migrate tool. # # Files that are not part of the templates will be ignored by default. unmanaged_files: - 'lib/main.dart' - 'ios/Runner.xcodeproj/project.pbxproj' ================================================ FILE: CHANGELOG.md ================================================ ## 4.2.0 * Add Swift Package Manager support. * Bump dependencies. ## 4.1.1 * Avoid iOS SDK version constraints caused by the addition of `NFCReaderError.Code`. ## 4.1.0 * Deprecated `NfcManager#isAvailable`. Use `NfcManager#checkAvailability` instead. * Fix iOS background issue. * Add more `NFCReaderError.Code` for iOS. * Bump versions. * Update doc. ## 4.0.2 * Update README. ## 4.0.1 * Update package page. ## 4.0.0 **Has many breaking changes.** * Rename the following: * `NfcA` to `NfcAAndroid` * `NfcB` to `NfcBAndroid` * `NfcF` to `NfcFAndroid` * `NfcV` to `NfcVAndroid` * `IsoDep` to `IsoDepAndroid` * `MifareClassic` to `MifareClassicAndroid` * `MifareUltralight` to `MifareUltralightAndroid` * `NdefFormatable` to `NdefFormatableAndroid` * `MiFare` to `MiFareIos` * `FeliCa` to `FeliCaIos` * `Iso15693` to `Iso15693Ios` * `Iso7816` to `Iso7816Ios` * Options for `startSession`: * `onError` to `onErrorIos` * `invalidateAfterFirstRead` to `invalidateAfterFirstReadIos` * `alertMessage` to `alertMessageIos` * Options for `stopSession`: * `alertMessage` to `alertMessageIos` * `errorMessage` to `errorMessageIos` * Remove the following: * `Ndef` (Instead use the [`nfc_manager_ndef`](https://pub.dev/packages/nfc_manager_ndef) package or `NdefAndroid` / `NdefIos`) * `timeout` (Instead use the `async getTimeout()` method) * `maxTransceiveLength` (Instead use the `async getMaxTransceiveLength()` method) * `NfcError` (Instead use the `NfcReaderSessionErrorIos`) * `NfcErrorType` (Instead use the `NfcReaderErrorCodeIos`) * Add the following: * `ndef_record.dart` library that provides access to [`ndef_record`](https://pub.dev/packages/ndef_record) package. * `nfc_manager_android.dart` library that provides access to Android API. * `nfc_manager_ios.dart` library that provides access to iOS API. * `async setTimeout()` method. * `noPlatformSoundsAndroid` option to `startSession` method. * Upgrade Flutter. * Update README. ## 3.5.1 * Make compatible for Kotlin 2.1.0 ## 3.5.0 * Upgrade Flutter. * Fix analyze issues. ## 3.4.0 * Fix iOS background isolate issue. * Add namespace to Gradle for Android. * Rebuild projects on Flutter stable channel. ## 3.3.0 * Added `invalidateAfterFirstRead` argument to `startSession`. This enables `restartPolling` on iOS. ## 3.2.0 * Fix build issues. ## 3.1.1 * Upgrade kotlin version. ## 3.1.0 * Fix Null-Safety related issues. The following properties are now nullable. * `IsoDep#hiLayerResponse` * `IsoDep#historicalBytes` * `Iso7816#historicalBytes` * `Iso7816#applicationData` * `MiFare#historicalBytes` ## 3.0.0+2 * Update doc. ## 3.0.0+1 * Flutter format. ## 3.0.0 * Upgrade to null safety. ## 2.0.3 * Fix type conversion errors in `FeliCa#readWithoutEncryption` and `FeliCa#requestServiceV2`. ## 2.0.2 * Fix a bug in calling `FeliCa.sendFeliCaCommand` method. ## 2.0.1+1 * Update README. ## 2.0.1 * Fix an error when initializing plugin for non-NFC Android devices. ## 2.0.0+2 * Update doc. * Flutter format. ## 2.0.0+1 * Update doc. ## 2.0.0 **Has many breaking changes.** * Remove `startNdefSession` and `NdefDiscoveredCallback`. * Rename `startTagSession` to `startSession`. * Rename `TagPollingOption` to `NfcPollingOption`. * Rename `NfcSessionError` to `NfcError`. * Rename `NfcSessionErrorType` to `NfcErrorType`. * Rename `TagDiscoveredCallback` to `NfcTagCallback`. * Rename `NfcSessionErrorCallback` to `NfcErrorCallback`. * Rename `ISO15693` to `Iso15693`. * Rename `ISO7816` to `Iso7816`. * Rename `fromTag` to `from`. (e.g. `MiFare.fromTag(tag)` -> `MiFare.from(tag)`) * Add `NdefTypeNameFormat` enum. * Add `NdefFormatable`, `MifareClassic` and `MifareUltralight` classes. * Add `Ndef#read` method. * Add command-implementations for `FeliCa` and `Iso15693`. * Upgrade flutter environment. ## 1.3.2+4 * Update README. ## 1.3.2+3 * Update README. ## 1.3.2+2 * Update README. ## 1.3.2+1 * Update README. ## 1.3.2 * Fix crash on Ndef write and writeLock error. ## 1.3.1 * Fix a bug where the error callback was not called. ## 1.3.0 * Add callback to handle error from session. ## 1.2.0 * Make discovered callback async. ## 1.1.0+1 * Update readme. ## 1.1.0 * Add constants. * Fix misspelled name. * Fix xcode build warning. * Increase the Flutter SDK requirement to ^1.10.0. ## 1.0.1 * Fix error on invoking transceive method. ## 1.0.0 * Add platform-specifc-tag operations. * Remove `NfcSessionType` enum. * Migrate to pubspec platforms manifest. * More consistent naming. ## 0.5.1 * Update flutter project files. * Additional fix for migration to AndroidX. ## 0.5.0 * Migrate to AndroidX. ## 0.4.0+2 * Fix typo on README ## 0.4.0+1 * Update README ## 0.4.0 * Rename `NfcNdef#cachedNdef` to `NfcNdef#cachedMessage`. * Add `NfcSessionType` enum. * Add `NfcTagPollingOption` enum. ## 0.3.0 * Add `NdefRecord#createMimeRecord`. * Add optional parameters `alertMessageIOS` and `errorMessageIOS` displayed in iOS system UI. * Fix error on deserializing null message on dart side. ## 0.2.0 * Split `startSession` into `startNdefSession` and `startTagSession`. * Improve doc. ## 0.1.1 * Fix crash on serializing nil message on ios side. * Add example project. * Improve doc. ## 0.1.0+2 * Improve doc. ## 0.1.0+1 * Improve doc. ## 0.1.0 * Add iOS 13 features. ## 0.0.1 * Initial release. ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2019 okadan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # nfc_manager A Flutter plugin providing access to NFC features on Android and iOS. ## Setup ### Android * Add [android.permission.NFC](https://developer.android.com/reference/android/Manifest.permission.html#NFC) to your `AndroidManifest.xml`. ### iOS * Add [Near Field Communication Tag Reader Session Formats Entitlements](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_nfc_readersession_formats) to your entitlements. * Add [NFCReaderUsageDescription](https://developer.apple.com/documentation/bundleresources/information_property_list/nfcreaderusagedescription) to your `Info.plist`. * Add [com.apple.developer.nfc.readersession.iso7816.select-identifiers](https://developer.apple.com/documentation/bundleresources/information_property_list/select-identifiers) to your `Info.plist` as needed. * Add [com.apple.developer.nfc.readersession.felica.systemcodes](https://developer.apple.com/documentation/bundleresources/information_property_list/systemcodes) to your `Info.plist` if you specify `NfcPollingOption.iso18092` in `startSession`, otherwise an error will occur. ## Usage ### Handling the Session ```dart import 'package:nfc_manager/nfc_manager.dart'; // Check the availability of NFC on the current device. NfcAvailability availability = await NfcManager.instance.checkAvailability(); if (availability != NfcAvailability.enabled) { print('NFC may not be supported or may be temporarily disabled.'); return; } // Start the session. NfcManager.instance.startSession( pollingOptions: {NfcPollingOption.iso14443}, // You can also specify iso18092 and iso15693. onDiscovered: (NfcTag tag) async { // Do something with an NfcTag instance... print(tag); // Stop the session when no longer needed. await NfcManager.instance.stopSession(); }, ); ``` ### Working with NfcTag An `NfcTag` instance is typically not used directly. Instead, convert it to a platform-specific tag class by calling that class's static method `from`. ```dart import 'package:nfc_manager/nfc_manager.dart'; import 'package:nfc_manager_ndef/nfc_manager_ndef.dart'; final Ndef ndef = Ndef.from(tag); if (ndef == null) { print('This tag is not compatible with NDEF.'); return; } // Do something with an Ndef instance... print(ndef); ``` The following platform-specific tag classes are available: #### Android only * `NfcAAndroid` * `NfcBAndroid` * `NfcFAndroid` * `NfcVAndroid` * `IsoDepAndroid` * `MifareClassicAndroid` * `MifareUltralightAndroid` * `NfcBarcodeAndroid` * `NdefAndroid` * `NdefFormatableAndroid` #### iOS only * `FeliCaIos` * `MiFareIos` * `Iso15693Ios` * `Iso7816Ios` * `NdefIos` #### Cross-platform abstractions (separate packages) * `Ndef` ([nfc_manager_ndef](https://pub.dev/packages/nfc_manager_ndef)) * `FeliCa` ([nfc_manager_felica](https://pub.dev/packages/nfc_manager_felica)) * and more... ================================================ FILE: analysis_options.yaml ================================================ include: package:flutter_lints/flutter.yaml ================================================ FILE: android/.gitignore ================================================ *.iml .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build /captures .cxx ================================================ FILE: android/build.gradle.kts ================================================ group = "dev.flutter.plugins.nfcmanager" version = "1.0-SNAPSHOT" buildscript { val kotlinVersion = "2.2.20" repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:8.11.1") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") } } allprojects { repositories { google() mavenCentral() } } plugins { id("com.android.library") id("kotlin-android") } android { namespace = "dev.flutter.plugins.nfcmanager" compileSdk = 36 compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = JavaVersion.VERSION_17.toString() } sourceSets { getByName("main") { java.srcDirs("src/main/kotlin") } getByName("test") { java.srcDirs("src/test/kotlin") } } defaultConfig { minSdk = 24 } testOptions { unitTests { isIncludeAndroidResources = true all { it.useJUnitPlatform() it.outputs.upToDateWhen { false } it.testLogging { events("passed", "skipped", "failed", "standardOut", "standardError") showStandardStreams = true } } } } } dependencies { testImplementation("org.jetbrains.kotlin:kotlin-test") testImplementation("org.mockito:mockito-core:5.0.0") } ================================================ FILE: android/settings.gradle ================================================ rootProject.name = 'nfc_manager' ================================================ FILE: android/settings.gradle.kts ================================================ rootProject.name = 'nfc_manager' ================================================ FILE: android/src/main/AndroidManifest.xml ================================================ ================================================ FILE: android/src/main/kotlin/dev/flutter/plugins/nfcmanager/NfcManagerPlugin.kt ================================================ package dev.flutter.plugins.nfcmanager import android.app.Activity import android.app.PendingIntent import android.content.BroadcastReceiver import android.content.Context import android.content.Context.RECEIVER_NOT_EXPORTED import android.content.Intent import android.content.IntentFilter import android.nfc.NdefMessage import android.nfc.NdefRecord import android.nfc.NfcAdapter import android.nfc.Tag import android.nfc.tech.IsoDep import android.nfc.tech.MifareClassic import android.nfc.tech.MifareUltralight import android.nfc.tech.Ndef import android.nfc.tech.NdefFormatable import android.nfc.tech.NfcA import android.nfc.tech.NfcB import android.nfc.tech.NfcBarcode import android.nfc.tech.NfcF import android.nfc.tech.NfcV import android.nfc.tech.TagTechnology import android.os.Build import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.embedding.engine.plugins.activity.ActivityAware import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding import java.util.* class NfcManagerPlugin: FlutterPlugin, ActivityAware, HostApiPigeon, BroadcastReceiver() { private lateinit var flutterApi: FlutterApiPigeon private lateinit var activity: Activity private var adapter: NfcAdapter? = null private var cachedTags: MutableMap = mutableMapOf() private var connectedTech: TagTechnology? = null override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { HostApiPigeon.setUp(flutterPluginBinding.binaryMessenger, this) flutterApi = FlutterApiPigeon(flutterPluginBinding.binaryMessenger) adapter = NfcAdapter.getDefaultAdapter(flutterPluginBinding.applicationContext) } override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { HostApiPigeon.setUp(binding.binaryMessenger, null) } override fun onAttachedToActivity(binding: ActivityPluginBinding) { activity = binding.activity val intentFilter = IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { activity.applicationContext.registerReceiver(this, intentFilter, RECEIVER_NOT_EXPORTED) } else { activity.applicationContext.registerReceiver(this, intentFilter) } } override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) { activity = binding.activity } override fun onDetachedFromActivityForConfigChanges() { // noop } override fun onDetachedFromActivity() { // noop } override fun onReceive(context: Context?, intent: Intent?) { intent ?: run { return } if (intent.action != NfcAdapter.ACTION_ADAPTER_STATE_CHANGED) { return } val state = intent.getIntExtra(NfcAdapter.EXTRA_ADAPTER_STATE, NfcAdapter.STATE_OFF) flutterApi.onAdapterStateChanged(toAdapterStatePigeon(state)) { /* noop */ } } override fun nfcAdapterIsEnabled(): Boolean { return getAdapter().isEnabled } override fun nfcAdapterIsSecureNfcEnabled(): Boolean { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { throw FlutterError("unavailable", "Required Android SDK >= ${Build.VERSION_CODES.Q}.", null) } return getAdapter().isSecureNfcEnabled } override fun nfcAdapterIsSecureNfcSupported(): Boolean { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { throw FlutterError("unavailable", "Required Android SDK >= ${Build.VERSION_CODES.Q}.", null) } return getAdapter().isSecureNfcSupported } override fun nfcAdapterEnableReaderMode(flags: List) { getAdapter().enableReaderMode(activity, { onTagDiscovered(it) }, toInt(flags), null) } override fun nfcAdapterDisableReaderMode() { getAdapter().disableReaderMode(activity) cachedTags.clear() // Consider when to remove the tag. } override fun ndefGetNdefMessage(handle: String): NdefMessagePigeon? { val tech = forceConnect(handle) { Ndef.get(it) } val message = tech.ndefMessage return if (message != null) toNdefMessagePigeon(message) else null } override fun ndefWriteNdefMessage(handle: String, message: NdefMessagePigeon) { val tech = forceConnect(handle) { Ndef.get(it) } tech.writeNdefMessage(toNdefMessage(message)) } override fun ndefMakeReadOnly(handle: String): Boolean { val tech = forceConnect(handle) { Ndef.get(it) } return tech.makeReadOnly() } override fun nfcAGetMaxTransceiveLength(handle: String): Long { val tech = forceConnect(handle) { NfcA.get(it) } return tech.maxTransceiveLength.toLong() } override fun nfcAGetTimeout(handle: String): Long { val tech = forceConnect(handle) { NfcA.get(it) } return tech.timeout.toLong() } override fun nfcASetTimeout(handle: String, timeout: Long) { val tech = forceConnect(handle) { NfcA.get(it) } tech.timeout = timeout.toInt() } override fun nfcATransceive(handle: String, bytes: ByteArray): ByteArray { val tech = forceConnect(handle) { NfcA.get(it) } return tech.transceive(bytes) } override fun nfcBGetMaxTransceiveLength(handle: String): Long { val tech = forceConnect(handle) { NfcB.get(it) } return tech.maxTransceiveLength.toLong() } override fun nfcBTransceive(handle: String, bytes: ByteArray): ByteArray { val tech = forceConnect(handle) { NfcB.get(it) } return tech.transceive(bytes) } override fun nfcFGetMaxTransceiveLength(handle: String): Long { val tech = forceConnect(handle) { NfcF.get(it) } return tech.maxTransceiveLength.toLong() } override fun nfcFGetTimeout(handle: String): Long { val tech = forceConnect(handle) { NfcF.get(it) } return tech.timeout.toLong() } override fun nfcFSetTimeout(handle: String, timeout: Long) { val tech = forceConnect(handle) { NfcF.get(it) } tech.timeout = timeout.toInt() } override fun nfcFTransceive(handle: String, bytes: ByteArray): ByteArray { val tech = forceConnect(handle) { NfcF.get(it) } return tech.transceive(bytes) } override fun nfcVGetMaxTransceiveLength(handle: String): Long { val tech = forceConnect(handle) { NfcV.get(it) } return tech.maxTransceiveLength.toLong() } override fun nfcVTransceive(handle: String, bytes: ByteArray): ByteArray { val tech = forceConnect(handle) { NfcV.get(it) } return tech.transceive(bytes) } override fun isoDepGetMaxTransceiveLength(handle: String): Long { val tech = forceConnect(handle) { IsoDep.get(it) } return tech.maxTransceiveLength.toLong() } override fun isoDepGetTimeout(handle: String): Long { val tech = forceConnect(handle) { IsoDep.get(it) } return tech.timeout.toLong() } override fun isoDepSetTimeout(handle: String, timeout: Long) { val tech = forceConnect(handle) { IsoDep.get(it) } tech.timeout = timeout.toInt() } override fun isoDepTransceive(handle: String, bytes: ByteArray): ByteArray { val tech = forceConnect(handle) { IsoDep.get(it) } return tech.transceive(bytes) } override fun mifareClassicGetMaxTransceiveLength(handle: String): Long { val tech = forceConnect(handle) { MifareClassic.get(it) } return tech.maxTransceiveLength.toLong() } override fun mifareClassicGetTimeout(handle: String): Long { val tech = forceConnect(handle) { MifareClassic.get(it) } return tech.timeout.toLong() } override fun mifareClassicSetTimeout(handle: String, timeout: Long) { val tech = forceConnect(handle) { MifareClassic.get(it) } tech.timeout = timeout.toInt() } override fun mifareClassicAuthenticateSectorWithKeyA(handle: String, sectorIndex: Long, key: ByteArray): Boolean { val tech = forceConnect(handle) { MifareClassic.get(it) } return tech.authenticateSectorWithKeyA(sectorIndex.toInt(), key) } override fun mifareClassicAuthenticateSectorWithKeyB(handle: String, sectorIndex: Long, key: ByteArray): Boolean { val tech = forceConnect(handle) { MifareClassic.get(it) } return tech.authenticateSectorWithKeyB(sectorIndex.toInt(), key) } override fun mifareClassicGetBlockCountInSector(handle: String, sectorIndex: Long): Long { val tech = forceConnect(handle) { MifareClassic.get(it) } return tech.getBlockCountInSector(sectorIndex.toInt()).toLong() } override fun mifareClassicBlockToSector(handle: String, blockIndex: Long): Long { val tech = forceConnect(handle) { MifareClassic.get(it) } return tech.blockToSector(blockIndex.toInt()).toLong() } override fun mifareClassicSectorToBlock(handle: String, sectorIndex: Long): Long { val tech = forceConnect(handle) { MifareClassic.get(it) } return tech.sectorToBlock(sectorIndex.toInt()).toLong() } override fun mifareClassicIncrement(handle: String, blockIndex: Long, value: Long) { val tech = forceConnect(handle) { MifareClassic.get(it) } tech.increment(blockIndex.toInt(), value.toInt()) } override fun mifareClassicDecrement(handle: String, blockIndex: Long, value: Long) { val tech = forceConnect(handle) { MifareClassic.get(it) } tech.decrement(blockIndex.toInt(), value.toInt()) } override fun mifareClassicRestore(handle: String, blockIndex: Long) { val tech = forceConnect(handle) { MifareClassic.get(it) } tech.restore(blockIndex.toInt()) } override fun mifareClassicTransfer(handle: String, blockIndex: Long) { val tech = forceConnect(handle) { MifareClassic.get(it) } tech.transfer(blockIndex.toInt()) } override fun mifareClassicReadBlock(handle: String, blockIndex: Long): ByteArray { val tech = forceConnect(handle) { MifareClassic.get(it) } return tech.readBlock(blockIndex.toInt()) } override fun mifareClassicWriteBlock(handle: String, blockIndex: Long, data: ByteArray) { val tech = forceConnect(handle) { MifareClassic.get(it) } tech.writeBlock(blockIndex.toInt(), data) } override fun mifareClassicTransceive(handle: String, bytes: ByteArray): ByteArray { val tech = forceConnect(handle) { MifareClassic.get(it) } return tech.transceive(bytes) } override fun mifareUltralightGetMaxTransceiveLength(handle: String): Long { val tech = forceConnect(handle) { MifareUltralight.get(it) } return tech.maxTransceiveLength.toLong() } override fun mifareUltralightGetTimeout(handle: String): Long { val tech = forceConnect(handle) { MifareUltralight.get(it) } return tech.timeout.toLong() } override fun mifareUltralightSetTimeout(handle: String, timeout: Long) { val tech = forceConnect(handle) { MifareUltralight.get(it) } tech.timeout = timeout.toInt() } override fun mifareUltralightReadPages(handle: String, pageOffset: Long): ByteArray { val tech = forceConnect(handle) { MifareUltralight.get(it) } return tech.readPages(pageOffset.toInt()) } override fun mifareUltralightWritePage(handle: String, pageOffset: Long, data: ByteArray) { val tech = forceConnect(handle) { MifareUltralight.get(it) } tech.writePage(pageOffset.toInt(), data) } override fun mifareUltralightTransceive(handle: String, bytes: ByteArray): ByteArray { val tech = forceConnect(handle) { MifareUltralight.get(it) } return tech.transceive(bytes) } override fun ndefFormatableFormat(handle: String, firstMessage: NdefMessagePigeon) { val tech = forceConnect(handle) { NdefFormatable.get(it) } tech.format(toNdefMessage(firstMessage)) } override fun ndefFormatableFormatReadOnly(handle: String, firstMessage: NdefMessagePigeon) { val tech = forceConnect(handle) { NdefFormatable.get(it) } tech.formatReadOnly(toNdefMessage(firstMessage)) } private fun onTagDiscovered(tag: Tag) { val handle = UUID.randomUUID().toString() val pigeonTag = toTagPigeon(tag, handle) cachedTags[handle] = tag activity.runOnUiThread { flutterApi.onTagDiscovered(pigeonTag) { /* no op */ } } } private fun getAdapter(): NfcAdapter { return adapter ?: run { throw FlutterError("not_supported", "NFC is not supported on this device.", null) } } private inline fun forceConnect(handle: String, getMethod: (Tag) -> T?): T { val tag = cachedTags[handle] ?: run { throw FlutterError("tag_not_found", "You may have disable the session.", null) } val tech = getMethod(tag) ?: run { throw FlutterError("tag_not_found", "The tag cannot be converted to ${T::class.java.name}.", null) } val connectedTech = connectedTech ?: run { tech.connect() connectedTech = tech return tech } if (connectedTech.tag != tech.tag || connectedTech::class.java.name != tech::class.java.name) { try { connectedTech.close() } catch (e: Exception) { /* no op */ } tech.connect() this.connectedTech = tech } return tech } } private fun toInt(value: List): Int { return value.fold(0) { p, e -> p or toInt(e)} } private fun toInt(value: ReaderFlagPigeon): Int { return when (value) { ReaderFlagPigeon.NFC_A-> NfcAdapter.FLAG_READER_NFC_A ReaderFlagPigeon.NFC_B -> NfcAdapter.FLAG_READER_NFC_B ReaderFlagPigeon.NFC_BARCODE -> NfcAdapter.FLAG_READER_NFC_BARCODE ReaderFlagPigeon.NFC_F -> NfcAdapter.FLAG_READER_NFC_F ReaderFlagPigeon.NFC_V -> NfcAdapter.FLAG_READER_NFC_V ReaderFlagPigeon.NO_PLATFORM_SOUNDS -> NfcAdapter.FLAG_READER_NO_PLATFORM_SOUNDS ReaderFlagPigeon.SKIP_NDEF_CHECK -> NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK } } private fun toNdefMessage(value: NdefMessagePigeon): NdefMessage { return NdefMessage(value.records.map { toNdefRecord(it) }.toTypedArray()) } private fun toNdefMessagePigeon(value: NdefMessage): NdefMessagePigeon { return NdefMessagePigeon( records = value.records.map { toNdefRecordPigeon(it) } ) } private fun toNdefRecord(value: NdefRecordPigeon): NdefRecord { return NdefRecord( toShort(value.tnf), value.type, value.id, value.payload, ) } private fun toNdefRecordPigeon(value: NdefRecord): NdefRecordPigeon { return NdefRecordPigeon( tnf = toTypeNameFormatPigeon(value.tnf), type = value.type, id = value.id, payload = value.payload, ) } private fun toTagPigeon(value: Tag, handle: String): TagPigeon { return TagPigeon( handle = handle, id = value.id, techList = value.techList.toMutableList(), ndef = Ndef.get(value)?.let { toNdefPigeon(it) }, nfcA = NfcA.get(value)?.let { toNfcAPigeon(it) }, nfcB = NfcB.get(value)?.let { toNfcBPigeon(it) }, nfcF = NfcF.get(value)?.let { toNfcFPigeon(it) }, nfcV = NfcV.get(value)?.let { toNfcVPigeon(it) }, isoDep = IsoDep.get(value)?.let { toIsoDepPigeon(it) }, mifareClassic = MifareClassic.get(value)?.let { toMifareClassicPigeon(it) }, mifareUltralight = MifareUltralight.get(value)?.let { toMifareUltralightPigeon(it) }, ndefFormatable = NdefFormatable.get(value)?.let { "" }, nfcBarcode = NfcBarcode.get(value)?.let { toNfcBarcodePigeon(it) }, ) } private fun toNdefPigeon(value: Ndef): NdefPigeon { return NdefPigeon( type = value.type, isWritable = value.isWritable, maxSize = value.maxSize.toLong(), canMakeReadOnly = value.canMakeReadOnly(), cachedNdefMessage = value.cachedNdefMessage?.let { toNdefMessagePigeon(it) }, ) } private fun toNfcAPigeon(value: NfcA): NfcAPigeon { return NfcAPigeon( atqa = value.atqa, sak = value.sak.toLong(), ) } private fun toNfcBPigeon(value: NfcB): NfcBPigeon { return NfcBPigeon( applicationData = value.applicationData, protocolInfo = value.protocolInfo, ) } private fun toNfcFPigeon(value: NfcF): NfcFPigeon { return NfcFPigeon( manufacturer = value.manufacturer, systemCode = value.systemCode, ) } private fun toNfcVPigeon(value: NfcV): NfcVPigeon { return NfcVPigeon( dsfId = value.dsfId.toLong(), responseFlags = value.responseFlags.toLong(), ) } private fun toIsoDepPigeon(value: IsoDep): IsoDepPigeon { return IsoDepPigeon( hiLayerResponse = value.hiLayerResponse, historicalBytes = value.historicalBytes, isExtendedLengthApduSupported = value.isExtendedLengthApduSupported, ) } private fun toMifareClassicPigeon(value: MifareClassic): MifareClassicPigeon { return MifareClassicPigeon( type = toMifareClassicTypePigeon(value.type), blockCount = value.blockCount.toLong(), sectorCount = value.sectorCount.toLong(), size = value.size.toLong(), ) } private fun toMifareUltralightPigeon(value: MifareUltralight): MifareUltralightPigeon { return MifareUltralightPigeon( type = toMifareUltralightTypePigeon(value.type) ) } private fun toNfcBarcodePigeon(value: NfcBarcode): NfcBarcodePigeon { return NfcBarcodePigeon( type = toNfcBarcodeTypePigeon(value.type), barcode = value.barcode, ) } private fun toShort(value: TypeNameFormatPigeon): Short { return when (value) { TypeNameFormatPigeon.EMPTY -> NdefRecord.TNF_EMPTY TypeNameFormatPigeon.WELL_KNOWN -> NdefRecord.TNF_WELL_KNOWN TypeNameFormatPigeon.MEDIA -> NdefRecord.TNF_MIME_MEDIA TypeNameFormatPigeon.ABSOLUTE_URI -> NdefRecord.TNF_ABSOLUTE_URI TypeNameFormatPigeon.EXTERNAL -> NdefRecord.TNF_EXTERNAL_TYPE TypeNameFormatPigeon.UNKNOWN -> NdefRecord.TNF_UNKNOWN TypeNameFormatPigeon.UNCHANGED -> NdefRecord.TNF_UNCHANGED } } private fun toAdapterStatePigeon(value: Int): AdapterStatePigeon { return when (value) { NfcAdapter.STATE_OFF -> AdapterStatePigeon.OFF NfcAdapter.STATE_TURNING_ON -> AdapterStatePigeon.TURNING_ON NfcAdapter.STATE_ON -> AdapterStatePigeon.ON NfcAdapter.STATE_TURNING_OFF -> AdapterStatePigeon.TURNING_OFF else -> error("Unknown value: $value") } } private fun toTypeNameFormatPigeon(value: Short): TypeNameFormatPigeon { return when (value) { NdefRecord.TNF_EMPTY -> TypeNameFormatPigeon.EMPTY NdefRecord.TNF_WELL_KNOWN -> TypeNameFormatPigeon.WELL_KNOWN NdefRecord.TNF_MIME_MEDIA -> TypeNameFormatPigeon.MEDIA NdefRecord.TNF_ABSOLUTE_URI -> TypeNameFormatPigeon.ABSOLUTE_URI NdefRecord.TNF_EXTERNAL_TYPE -> TypeNameFormatPigeon.EXTERNAL NdefRecord.TNF_UNKNOWN -> TypeNameFormatPigeon.UNKNOWN NdefRecord.TNF_UNCHANGED -> TypeNameFormatPigeon.UNCHANGED else -> error("Unknown value: $value") } } private fun toNfcBarcodeTypePigeon(value: Int): NfcBarcodeTypePigeon { return when (value) { NfcBarcode.TYPE_KOVIO -> NfcBarcodeTypePigeon.KOVIO NfcBarcode.TYPE_UNKNOWN -> NfcBarcodeTypePigeon.UNKNOWN else -> error("Unknown value: $value") } } private fun toMifareClassicTypePigeon(value: Int): MifareClassicTypePigeon { return when (value) { MifareClassic.TYPE_CLASSIC -> MifareClassicTypePigeon.CLASSIC MifareClassic.TYPE_PLUS -> MifareClassicTypePigeon.PLUS MifareClassic.TYPE_PRO -> MifareClassicTypePigeon.PRO MifareClassic.TYPE_UNKNOWN -> MifareClassicTypePigeon.UNKNOWN else -> error("Unknown value: $value") } } private fun toMifareUltralightTypePigeon(value: Int): MifareUltralightTypePigeon { return when (value) { MifareUltralight.TYPE_ULTRALIGHT -> MifareUltralightTypePigeon.ULTRALIGHT MifareUltralight.TYPE_ULTRALIGHT_C -> MifareUltralightTypePigeon.ULTRALIGHT_C MifareUltralight.TYPE_UNKNOWN -> MifareUltralightTypePigeon.UNKNOWN else -> error("Unknown value: $value") } } ================================================ FILE: android/src/main/kotlin/dev/flutter/plugins/nfcmanager/Pigeon.kt ================================================ // Autogenerated from Pigeon (v26.3.3), do not edit directly. // See also: https://pub.dev/packages/pigeon @file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") package dev.flutter.plugins.nfcmanager import android.util.Log import io.flutter.plugin.common.BasicMessageChannel import io.flutter.plugin.common.BinaryMessenger import io.flutter.plugin.common.EventChannel import io.flutter.plugin.common.MessageCodec import io.flutter.plugin.common.StandardMethodCodec import io.flutter.plugin.common.StandardMessageCodec import java.io.ByteArrayOutputStream import java.nio.ByteBuffer private object PigeonPigeonUtils { fun createConnectionError(channelName: String): FlutterError { return FlutterError("channel-error", "Unable to establish connection on channel: '$channelName'.", "") } fun wrapResult(result: Any?): List { return listOf(result) } fun wrapError(exception: Throwable): List { return if (exception is FlutterError) { listOf( exception.code, exception.message, exception.details ) } else { listOf( exception.javaClass.simpleName, exception.toString(), "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception) ) } } fun doubleEquals(a: Double, b: Double): Boolean { // Normalize -0.0 to 0.0 and handle NaN equality. return (if (a == 0.0) 0.0 else a) == (if (b == 0.0) 0.0 else b) || (a.isNaN() && b.isNaN()) } fun floatEquals(a: Float, b: Float): Boolean { // Normalize -0.0 to 0.0 and handle NaN equality. return (if (a == 0.0f) 0.0f else a) == (if (b == 0.0f) 0.0f else b) || (a.isNaN() && b.isNaN()) } fun doubleHash(d: Double): Int { // Normalize -0.0 to 0.0 and handle NaN to ensure consistent hash codes. val normalized = if (d == 0.0) 0.0 else d val bits = java.lang.Double.doubleToLongBits(normalized) return (bits xor (bits ushr 32)).toInt() } fun floatHash(f: Float): Int { // Normalize -0.0 to 0.0 and handle NaN to ensure consistent hash codes. val normalized = if (f == 0.0f) 0.0f else f return java.lang.Float.floatToIntBits(normalized) } fun deepEquals(a: Any?, b: Any?): Boolean { if (a === b) { return true } if (a == null || b == null) { return false } if (a is ByteArray && b is ByteArray) { return a.contentEquals(b) } if (a is IntArray && b is IntArray) { return a.contentEquals(b) } if (a is LongArray && b is LongArray) { return a.contentEquals(b) } if (a is DoubleArray && b is DoubleArray) { if (a.size != b.size) return false for (i in a.indices) { if (!doubleEquals(a[i], b[i])) return false } return true } if (a is FloatArray && b is FloatArray) { if (a.size != b.size) return false for (i in a.indices) { if (!floatEquals(a[i], b[i])) return false } return true } if (a is Array<*> && b is Array<*>) { if (a.size != b.size) return false for (i in a.indices) { if (!deepEquals(a[i], b[i])) return false } return true } if (a is List<*> && b is List<*>) { if (a.size != b.size) return false val iterA = a.iterator() val iterB = b.iterator() while (iterA.hasNext() && iterB.hasNext()) { if (!deepEquals(iterA.next(), iterB.next())) return false } return true } if (a is Map<*, *> && b is Map<*, *>) { if (a.size != b.size) return false for (entry in a) { val key = entry.key var found = false for (bEntry in b) { if (deepEquals(key, bEntry.key)) { if (deepEquals(entry.value, bEntry.value)) { found = true break } else { return false } } } if (!found) return false } return true } if (a is Double && b is Double) { return doubleEquals(a, b) } if (a is Float && b is Float) { return floatEquals(a, b) } return a == b } fun deepHash(value: Any?): Int { return when (value) { null -> 0 is ByteArray -> value.contentHashCode() is IntArray -> value.contentHashCode() is LongArray -> value.contentHashCode() is DoubleArray -> { var result = 1 for (item in value) { result = 31 * result + doubleHash(item) } result } is FloatArray -> { var result = 1 for (item in value) { result = 31 * result + floatHash(item) } result } is Array<*> -> { var result = 1 for (item in value) { result = 31 * result + deepHash(item) } result } is List<*> -> { var result = 1 for (item in value) { result = 31 * result + deepHash(item) } result } is Map<*, *> -> { var result = 0 for (entry in value) { result += ((deepHash(entry.key) * 31) xor deepHash(entry.value)) } result } is Double -> doubleHash(value) is Float -> floatHash(value) else -> value.hashCode() } } } /** * Error class for passing custom error details to Flutter via a thrown PlatformException. * @property code The error code. * @property message The error message. * @property details The error details. Must be a datatype supported by the api codec. */ class FlutterError ( val code: String, override val message: String? = null, val details: Any? = null ) : Throwable() enum class ReaderFlagPigeon(val raw: Int) { NFC_A(0), NFC_B(1), NFC_BARCODE(2), NFC_F(3), NFC_V(4), NO_PLATFORM_SOUNDS(5), SKIP_NDEF_CHECK(6); companion object { fun ofRaw(raw: Int): ReaderFlagPigeon? { return values().firstOrNull { it.raw == raw } } } } enum class AdapterStatePigeon(val raw: Int) { OFF(0), TURNING_ON(1), ON(2), TURNING_OFF(3); companion object { fun ofRaw(raw: Int): AdapterStatePigeon? { return values().firstOrNull { it.raw == raw } } } } enum class TypeNameFormatPigeon(val raw: Int) { EMPTY(0), WELL_KNOWN(1), MEDIA(2), ABSOLUTE_URI(3), EXTERNAL(4), UNKNOWN(5), UNCHANGED(6); companion object { fun ofRaw(raw: Int): TypeNameFormatPigeon? { return values().firstOrNull { it.raw == raw } } } } enum class NfcBarcodeTypePigeon(val raw: Int) { KOVIO(0), UNKNOWN(1); companion object { fun ofRaw(raw: Int): NfcBarcodeTypePigeon? { return values().firstOrNull { it.raw == raw } } } } enum class MifareClassicTypePigeon(val raw: Int) { CLASSIC(0), PLUS(1), PRO(2), UNKNOWN(3); companion object { fun ofRaw(raw: Int): MifareClassicTypePigeon? { return values().firstOrNull { it.raw == raw } } } } enum class MifareUltralightTypePigeon(val raw: Int) { ULTRALIGHT(0), ULTRALIGHT_C(1), UNKNOWN(2); companion object { fun ofRaw(raw: Int): MifareUltralightTypePigeon? { return values().firstOrNull { it.raw == raw } } } } /** Generated class from Pigeon that represents data sent in messages. */ data class TagPigeon ( val handle: String, val id: ByteArray, val techList: List, val ndef: NdefPigeon? = null, val nfcA: NfcAPigeon? = null, val nfcB: NfcBPigeon? = null, val nfcF: NfcFPigeon? = null, val nfcV: NfcVPigeon? = null, val isoDep: IsoDepPigeon? = null, val mifareClassic: MifareClassicPigeon? = null, val mifareUltralight: MifareUltralightPigeon? = null, val ndefFormatable: String? = null, val nfcBarcode: NfcBarcodePigeon? = null ) { companion object { fun fromList(pigeonVar_list: List): TagPigeon { val handle = pigeonVar_list[0] as String val id = pigeonVar_list[1] as ByteArray val techList = pigeonVar_list[2] as List val ndef = pigeonVar_list[3] as NdefPigeon? val nfcA = pigeonVar_list[4] as NfcAPigeon? val nfcB = pigeonVar_list[5] as NfcBPigeon? val nfcF = pigeonVar_list[6] as NfcFPigeon? val nfcV = pigeonVar_list[7] as NfcVPigeon? val isoDep = pigeonVar_list[8] as IsoDepPigeon? val mifareClassic = pigeonVar_list[9] as MifareClassicPigeon? val mifareUltralight = pigeonVar_list[10] as MifareUltralightPigeon? val ndefFormatable = pigeonVar_list[11] as String? val nfcBarcode = pigeonVar_list[12] as NfcBarcodePigeon? return TagPigeon(handle, id, techList, ndef, nfcA, nfcB, nfcF, nfcV, isoDep, mifareClassic, mifareUltralight, ndefFormatable, nfcBarcode) } } fun toList(): List { return listOf( handle, id, techList, ndef, nfcA, nfcB, nfcF, nfcV, isoDep, mifareClassic, mifareUltralight, ndefFormatable, nfcBarcode, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as TagPigeon return PigeonPigeonUtils.deepEquals(this.handle, other.handle) && PigeonPigeonUtils.deepEquals(this.id, other.id) && PigeonPigeonUtils.deepEquals(this.techList, other.techList) && PigeonPigeonUtils.deepEquals(this.ndef, other.ndef) && PigeonPigeonUtils.deepEquals(this.nfcA, other.nfcA) && PigeonPigeonUtils.deepEquals(this.nfcB, other.nfcB) && PigeonPigeonUtils.deepEquals(this.nfcF, other.nfcF) && PigeonPigeonUtils.deepEquals(this.nfcV, other.nfcV) && PigeonPigeonUtils.deepEquals(this.isoDep, other.isoDep) && PigeonPigeonUtils.deepEquals(this.mifareClassic, other.mifareClassic) && PigeonPigeonUtils.deepEquals(this.mifareUltralight, other.mifareUltralight) && PigeonPigeonUtils.deepEquals(this.ndefFormatable, other.ndefFormatable) && PigeonPigeonUtils.deepEquals(this.nfcBarcode, other.nfcBarcode) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.handle) result = 31 * result + PigeonPigeonUtils.deepHash(this.id) result = 31 * result + PigeonPigeonUtils.deepHash(this.techList) result = 31 * result + PigeonPigeonUtils.deepHash(this.ndef) result = 31 * result + PigeonPigeonUtils.deepHash(this.nfcA) result = 31 * result + PigeonPigeonUtils.deepHash(this.nfcB) result = 31 * result + PigeonPigeonUtils.deepHash(this.nfcF) result = 31 * result + PigeonPigeonUtils.deepHash(this.nfcV) result = 31 * result + PigeonPigeonUtils.deepHash(this.isoDep) result = 31 * result + PigeonPigeonUtils.deepHash(this.mifareClassic) result = 31 * result + PigeonPigeonUtils.deepHash(this.mifareUltralight) result = 31 * result + PigeonPigeonUtils.deepHash(this.ndefFormatable) result = 31 * result + PigeonPigeonUtils.deepHash(this.nfcBarcode) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class NdefPigeon ( val type: String, val canMakeReadOnly: Boolean, val isWritable: Boolean, val maxSize: Long, val cachedNdefMessage: NdefMessagePigeon? = null ) { companion object { fun fromList(pigeonVar_list: List): NdefPigeon { val type = pigeonVar_list[0] as String val canMakeReadOnly = pigeonVar_list[1] as Boolean val isWritable = pigeonVar_list[2] as Boolean val maxSize = pigeonVar_list[3] as Long val cachedNdefMessage = pigeonVar_list[4] as NdefMessagePigeon? return NdefPigeon(type, canMakeReadOnly, isWritable, maxSize, cachedNdefMessage) } } fun toList(): List { return listOf( type, canMakeReadOnly, isWritable, maxSize, cachedNdefMessage, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as NdefPigeon return PigeonPigeonUtils.deepEquals(this.type, other.type) && PigeonPigeonUtils.deepEquals(this.canMakeReadOnly, other.canMakeReadOnly) && PigeonPigeonUtils.deepEquals(this.isWritable, other.isWritable) && PigeonPigeonUtils.deepEquals(this.maxSize, other.maxSize) && PigeonPigeonUtils.deepEquals(this.cachedNdefMessage, other.cachedNdefMessage) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.type) result = 31 * result + PigeonPigeonUtils.deepHash(this.canMakeReadOnly) result = 31 * result + PigeonPigeonUtils.deepHash(this.isWritable) result = 31 * result + PigeonPigeonUtils.deepHash(this.maxSize) result = 31 * result + PigeonPigeonUtils.deepHash(this.cachedNdefMessage) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class NfcAPigeon ( val atqa: ByteArray, val sak: Long ) { companion object { fun fromList(pigeonVar_list: List): NfcAPigeon { val atqa = pigeonVar_list[0] as ByteArray val sak = pigeonVar_list[1] as Long return NfcAPigeon(atqa, sak) } } fun toList(): List { return listOf( atqa, sak, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as NfcAPigeon return PigeonPigeonUtils.deepEquals(this.atqa, other.atqa) && PigeonPigeonUtils.deepEquals(this.sak, other.sak) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.atqa) result = 31 * result + PigeonPigeonUtils.deepHash(this.sak) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class NfcBPigeon ( val applicationData: ByteArray, val protocolInfo: ByteArray ) { companion object { fun fromList(pigeonVar_list: List): NfcBPigeon { val applicationData = pigeonVar_list[0] as ByteArray val protocolInfo = pigeonVar_list[1] as ByteArray return NfcBPigeon(applicationData, protocolInfo) } } fun toList(): List { return listOf( applicationData, protocolInfo, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as NfcBPigeon return PigeonPigeonUtils.deepEquals(this.applicationData, other.applicationData) && PigeonPigeonUtils.deepEquals(this.protocolInfo, other.protocolInfo) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.applicationData) result = 31 * result + PigeonPigeonUtils.deepHash(this.protocolInfo) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class NfcFPigeon ( val manufacturer: ByteArray, val systemCode: ByteArray ) { companion object { fun fromList(pigeonVar_list: List): NfcFPigeon { val manufacturer = pigeonVar_list[0] as ByteArray val systemCode = pigeonVar_list[1] as ByteArray return NfcFPigeon(manufacturer, systemCode) } } fun toList(): List { return listOf( manufacturer, systemCode, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as NfcFPigeon return PigeonPigeonUtils.deepEquals(this.manufacturer, other.manufacturer) && PigeonPigeonUtils.deepEquals(this.systemCode, other.systemCode) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.manufacturer) result = 31 * result + PigeonPigeonUtils.deepHash(this.systemCode) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class NfcVPigeon ( val dsfId: Long, val responseFlags: Long ) { companion object { fun fromList(pigeonVar_list: List): NfcVPigeon { val dsfId = pigeonVar_list[0] as Long val responseFlags = pigeonVar_list[1] as Long return NfcVPigeon(dsfId, responseFlags) } } fun toList(): List { return listOf( dsfId, responseFlags, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as NfcVPigeon return PigeonPigeonUtils.deepEquals(this.dsfId, other.dsfId) && PigeonPigeonUtils.deepEquals(this.responseFlags, other.responseFlags) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.dsfId) result = 31 * result + PigeonPigeonUtils.deepHash(this.responseFlags) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class IsoDepPigeon ( val hiLayerResponse: ByteArray? = null, val historicalBytes: ByteArray? = null, val isExtendedLengthApduSupported: Boolean ) { companion object { fun fromList(pigeonVar_list: List): IsoDepPigeon { val hiLayerResponse = pigeonVar_list[0] as ByteArray? val historicalBytes = pigeonVar_list[1] as ByteArray? val isExtendedLengthApduSupported = pigeonVar_list[2] as Boolean return IsoDepPigeon(hiLayerResponse, historicalBytes, isExtendedLengthApduSupported) } } fun toList(): List { return listOf( hiLayerResponse, historicalBytes, isExtendedLengthApduSupported, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as IsoDepPigeon return PigeonPigeonUtils.deepEquals(this.hiLayerResponse, other.hiLayerResponse) && PigeonPigeonUtils.deepEquals(this.historicalBytes, other.historicalBytes) && PigeonPigeonUtils.deepEquals(this.isExtendedLengthApduSupported, other.isExtendedLengthApduSupported) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.hiLayerResponse) result = 31 * result + PigeonPigeonUtils.deepHash(this.historicalBytes) result = 31 * result + PigeonPigeonUtils.deepHash(this.isExtendedLengthApduSupported) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class MifareClassicPigeon ( val type: MifareClassicTypePigeon, val blockCount: Long, val sectorCount: Long, val size: Long ) { companion object { fun fromList(pigeonVar_list: List): MifareClassicPigeon { val type = pigeonVar_list[0] as MifareClassicTypePigeon val blockCount = pigeonVar_list[1] as Long val sectorCount = pigeonVar_list[2] as Long val size = pigeonVar_list[3] as Long return MifareClassicPigeon(type, blockCount, sectorCount, size) } } fun toList(): List { return listOf( type, blockCount, sectorCount, size, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as MifareClassicPigeon return PigeonPigeonUtils.deepEquals(this.type, other.type) && PigeonPigeonUtils.deepEquals(this.blockCount, other.blockCount) && PigeonPigeonUtils.deepEquals(this.sectorCount, other.sectorCount) && PigeonPigeonUtils.deepEquals(this.size, other.size) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.type) result = 31 * result + PigeonPigeonUtils.deepHash(this.blockCount) result = 31 * result + PigeonPigeonUtils.deepHash(this.sectorCount) result = 31 * result + PigeonPigeonUtils.deepHash(this.size) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class MifareUltralightPigeon ( val type: MifareUltralightTypePigeon ) { companion object { fun fromList(pigeonVar_list: List): MifareUltralightPigeon { val type = pigeonVar_list[0] as MifareUltralightTypePigeon return MifareUltralightPigeon(type) } } fun toList(): List { return listOf( type, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as MifareUltralightPigeon return PigeonPigeonUtils.deepEquals(this.type, other.type) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.type) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class NfcBarcodePigeon ( val type: NfcBarcodeTypePigeon, val barcode: ByteArray ) { companion object { fun fromList(pigeonVar_list: List): NfcBarcodePigeon { val type = pigeonVar_list[0] as NfcBarcodeTypePigeon val barcode = pigeonVar_list[1] as ByteArray return NfcBarcodePigeon(type, barcode) } } fun toList(): List { return listOf( type, barcode, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as NfcBarcodePigeon return PigeonPigeonUtils.deepEquals(this.type, other.type) && PigeonPigeonUtils.deepEquals(this.barcode, other.barcode) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.type) result = 31 * result + PigeonPigeonUtils.deepHash(this.barcode) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class NdefMessagePigeon ( val records: List ) { companion object { fun fromList(pigeonVar_list: List): NdefMessagePigeon { val records = pigeonVar_list[0] as List return NdefMessagePigeon(records) } } fun toList(): List { return listOf( records, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as NdefMessagePigeon return PigeonPigeonUtils.deepEquals(this.records, other.records) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.records) return result } } /** Generated class from Pigeon that represents data sent in messages. */ data class NdefRecordPigeon ( val tnf: TypeNameFormatPigeon, val type: ByteArray, val id: ByteArray, val payload: ByteArray ) { companion object { fun fromList(pigeonVar_list: List): NdefRecordPigeon { val tnf = pigeonVar_list[0] as TypeNameFormatPigeon val type = pigeonVar_list[1] as ByteArray val id = pigeonVar_list[2] as ByteArray val payload = pigeonVar_list[3] as ByteArray return NdefRecordPigeon(tnf, type, id, payload) } } fun toList(): List { return listOf( tnf, type, id, payload, ) } override fun equals(other: Any?): Boolean { if (other == null || other.javaClass != javaClass) { return false } if (this === other) { return true } val other = other as NdefRecordPigeon return PigeonPigeonUtils.deepEquals(this.tnf, other.tnf) && PigeonPigeonUtils.deepEquals(this.type, other.type) && PigeonPigeonUtils.deepEquals(this.id, other.id) && PigeonPigeonUtils.deepEquals(this.payload, other.payload) } override fun hashCode(): Int { var result = javaClass.hashCode() result = 31 * result + PigeonPigeonUtils.deepHash(this.tnf) result = 31 * result + PigeonPigeonUtils.deepHash(this.type) result = 31 * result + PigeonPigeonUtils.deepHash(this.id) result = 31 * result + PigeonPigeonUtils.deepHash(this.payload) return result } } private open class PigeonPigeonCodec : StandardMessageCodec() { override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? { return when (type) { 129.toByte() -> { return (readValue(buffer) as Long?)?.let { ReaderFlagPigeon.ofRaw(it.toInt()) } } 130.toByte() -> { return (readValue(buffer) as Long?)?.let { AdapterStatePigeon.ofRaw(it.toInt()) } } 131.toByte() -> { return (readValue(buffer) as Long?)?.let { TypeNameFormatPigeon.ofRaw(it.toInt()) } } 132.toByte() -> { return (readValue(buffer) as Long?)?.let { NfcBarcodeTypePigeon.ofRaw(it.toInt()) } } 133.toByte() -> { return (readValue(buffer) as Long?)?.let { MifareClassicTypePigeon.ofRaw(it.toInt()) } } 134.toByte() -> { return (readValue(buffer) as Long?)?.let { MifareUltralightTypePigeon.ofRaw(it.toInt()) } } 135.toByte() -> { return (readValue(buffer) as? List)?.let { TagPigeon.fromList(it) } } 136.toByte() -> { return (readValue(buffer) as? List)?.let { NdefPigeon.fromList(it) } } 137.toByte() -> { return (readValue(buffer) as? List)?.let { NfcAPigeon.fromList(it) } } 138.toByte() -> { return (readValue(buffer) as? List)?.let { NfcBPigeon.fromList(it) } } 139.toByte() -> { return (readValue(buffer) as? List)?.let { NfcFPigeon.fromList(it) } } 140.toByte() -> { return (readValue(buffer) as? List)?.let { NfcVPigeon.fromList(it) } } 141.toByte() -> { return (readValue(buffer) as? List)?.let { IsoDepPigeon.fromList(it) } } 142.toByte() -> { return (readValue(buffer) as? List)?.let { MifareClassicPigeon.fromList(it) } } 143.toByte() -> { return (readValue(buffer) as? List)?.let { MifareUltralightPigeon.fromList(it) } } 144.toByte() -> { return (readValue(buffer) as? List)?.let { NfcBarcodePigeon.fromList(it) } } 145.toByte() -> { return (readValue(buffer) as? List)?.let { NdefMessagePigeon.fromList(it) } } 146.toByte() -> { return (readValue(buffer) as? List)?.let { NdefRecordPigeon.fromList(it) } } else -> super.readValueOfType(type, buffer) } } override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { when (value) { is ReaderFlagPigeon -> { stream.write(129) writeValue(stream, value.raw.toLong()) } is AdapterStatePigeon -> { stream.write(130) writeValue(stream, value.raw.toLong()) } is TypeNameFormatPigeon -> { stream.write(131) writeValue(stream, value.raw.toLong()) } is NfcBarcodeTypePigeon -> { stream.write(132) writeValue(stream, value.raw.toLong()) } is MifareClassicTypePigeon -> { stream.write(133) writeValue(stream, value.raw.toLong()) } is MifareUltralightTypePigeon -> { stream.write(134) writeValue(stream, value.raw.toLong()) } is TagPigeon -> { stream.write(135) writeValue(stream, value.toList()) } is NdefPigeon -> { stream.write(136) writeValue(stream, value.toList()) } is NfcAPigeon -> { stream.write(137) writeValue(stream, value.toList()) } is NfcBPigeon -> { stream.write(138) writeValue(stream, value.toList()) } is NfcFPigeon -> { stream.write(139) writeValue(stream, value.toList()) } is NfcVPigeon -> { stream.write(140) writeValue(stream, value.toList()) } is IsoDepPigeon -> { stream.write(141) writeValue(stream, value.toList()) } is MifareClassicPigeon -> { stream.write(142) writeValue(stream, value.toList()) } is MifareUltralightPigeon -> { stream.write(143) writeValue(stream, value.toList()) } is NfcBarcodePigeon -> { stream.write(144) writeValue(stream, value.toList()) } is NdefMessagePigeon -> { stream.write(145) writeValue(stream, value.toList()) } is NdefRecordPigeon -> { stream.write(146) writeValue(stream, value.toList()) } else -> super.writeValue(stream, value) } } } /** Generated class from Pigeon that represents Flutter messages that can be called from Kotlin. */ class FlutterApiPigeon(private val binaryMessenger: BinaryMessenger, private val messageChannelSuffix: String = "") { companion object { /** The codec used by FlutterApiPigeon. */ val codec: MessageCodec by lazy { PigeonPigeonCodec() } } fun onTagDiscovered(tagArg: TagPigeon, callback: (Result) -> Unit) { val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" val channelName = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.onTagDiscovered$separatedMessageChannelSuffix" val channel = BasicMessageChannel(binaryMessenger, channelName, codec) channel.send(listOf(tagArg)) { if (it is List<*>) { if (it.size > 1) { callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } } else { callback(Result.failure(PigeonPigeonUtils.createConnectionError(channelName))) } } } fun onAdapterStateChanged(stateArg: AdapterStatePigeon, callback: (Result) -> Unit) { val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" val channelName = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.onAdapterStateChanged$separatedMessageChannelSuffix" val channel = BasicMessageChannel(binaryMessenger, channelName, codec) channel.send(listOf(stateArg)) { if (it is List<*>) { if (it.size > 1) { callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } } else { callback(Result.failure(PigeonPigeonUtils.createConnectionError(channelName))) } } } } /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ interface HostApiPigeon { fun nfcAdapterIsEnabled(): Boolean fun nfcAdapterIsSecureNfcEnabled(): Boolean fun nfcAdapterIsSecureNfcSupported(): Boolean fun nfcAdapterEnableReaderMode(flags: List) fun nfcAdapterDisableReaderMode() fun ndefGetNdefMessage(handle: String): NdefMessagePigeon? fun ndefWriteNdefMessage(handle: String, message: NdefMessagePigeon) fun ndefMakeReadOnly(handle: String): Boolean fun nfcAGetMaxTransceiveLength(handle: String): Long fun nfcAGetTimeout(handle: String): Long fun nfcASetTimeout(handle: String, timeout: Long) fun nfcATransceive(handle: String, bytes: ByteArray): ByteArray fun nfcBGetMaxTransceiveLength(handle: String): Long fun nfcBTransceive(handle: String, bytes: ByteArray): ByteArray fun nfcFGetMaxTransceiveLength(handle: String): Long fun nfcFGetTimeout(handle: String): Long fun nfcFSetTimeout(handle: String, timeout: Long) fun nfcFTransceive(handle: String, bytes: ByteArray): ByteArray fun nfcVGetMaxTransceiveLength(handle: String): Long fun nfcVTransceive(handle: String, bytes: ByteArray): ByteArray fun isoDepGetMaxTransceiveLength(handle: String): Long fun isoDepGetTimeout(handle: String): Long fun isoDepSetTimeout(handle: String, timeout: Long) fun isoDepTransceive(handle: String, bytes: ByteArray): ByteArray fun mifareClassicGetMaxTransceiveLength(handle: String): Long fun mifareClassicGetTimeout(handle: String): Long fun mifareClassicSetTimeout(handle: String, timeout: Long) fun mifareClassicBlockToSector(handle: String, blockIndex: Long): Long fun mifareClassicGetBlockCountInSector(handle: String, sectorIndex: Long): Long fun mifareClassicSectorToBlock(handle: String, sectorIndex: Long): Long fun mifareClassicAuthenticateSectorWithKeyA(handle: String, sectorIndex: Long, key: ByteArray): Boolean fun mifareClassicAuthenticateSectorWithKeyB(handle: String, sectorIndex: Long, key: ByteArray): Boolean fun mifareClassicIncrement(handle: String, blockIndex: Long, value: Long) fun mifareClassicDecrement(handle: String, blockIndex: Long, value: Long) fun mifareClassicReadBlock(handle: String, blockIndex: Long): ByteArray fun mifareClassicWriteBlock(handle: String, blockIndex: Long, data: ByteArray) fun mifareClassicRestore(handle: String, blockIndex: Long) fun mifareClassicTransfer(handle: String, blockIndex: Long) fun mifareClassicTransceive(handle: String, bytes: ByteArray): ByteArray fun mifareUltralightGetMaxTransceiveLength(handle: String): Long fun mifareUltralightGetTimeout(handle: String): Long fun mifareUltralightSetTimeout(handle: String, timeout: Long) fun mifareUltralightReadPages(handle: String, pageOffset: Long): ByteArray fun mifareUltralightWritePage(handle: String, pageOffset: Long, data: ByteArray) fun mifareUltralightTransceive(handle: String, bytes: ByteArray): ByteArray fun ndefFormatableFormat(handle: String, firstMessage: NdefMessagePigeon) fun ndefFormatableFormatReadOnly(handle: String, firstMessage: NdefMessagePigeon) companion object { /** The codec used by HostApiPigeon. */ val codec: MessageCodec by lazy { PigeonPigeonCodec() } /** Sets up an instance of `HostApiPigeon` to handle messages through the `binaryMessenger`. */ @JvmOverloads fun setUp(binaryMessenger: BinaryMessenger, api: HostApiPigeon?, messageChannelSuffix: String = "") { val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterIsEnabled$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { _, reply -> val wrapped: List = try { listOf(api.nfcAdapterIsEnabled()) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterIsSecureNfcEnabled$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { _, reply -> val wrapped: List = try { listOf(api.nfcAdapterIsSecureNfcEnabled()) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterIsSecureNfcSupported$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { _, reply -> val wrapped: List = try { listOf(api.nfcAdapterIsSecureNfcSupported()) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterEnableReaderMode$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val flagsArg = args[0] as List val wrapped: List = try { api.nfcAdapterEnableReaderMode(flagsArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterDisableReaderMode$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { _, reply -> val wrapped: List = try { api.nfcAdapterDisableReaderMode() listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefGetNdefMessage$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.ndefGetNdefMessage(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefWriteNdefMessage$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val messageArg = args[1] as NdefMessagePigeon val wrapped: List = try { api.ndefWriteNdefMessage(handleArg, messageArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefMakeReadOnly$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.ndefMakeReadOnly(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAGetMaxTransceiveLength$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.nfcAGetMaxTransceiveLength(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAGetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.nfcAGetTimeout(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcASetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val timeoutArg = args[1] as Long val wrapped: List = try { api.nfcASetTimeout(handleArg, timeoutArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcATransceive$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val bytesArg = args[1] as ByteArray val wrapped: List = try { listOf(api.nfcATransceive(handleArg, bytesArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcBGetMaxTransceiveLength$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.nfcBGetMaxTransceiveLength(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcBTransceive$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val bytesArg = args[1] as ByteArray val wrapped: List = try { listOf(api.nfcBTransceive(handleArg, bytesArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFGetMaxTransceiveLength$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.nfcFGetMaxTransceiveLength(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFGetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.nfcFGetTimeout(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFSetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val timeoutArg = args[1] as Long val wrapped: List = try { api.nfcFSetTimeout(handleArg, timeoutArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFTransceive$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val bytesArg = args[1] as ByteArray val wrapped: List = try { listOf(api.nfcFTransceive(handleArg, bytesArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcVGetMaxTransceiveLength$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.nfcVGetMaxTransceiveLength(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcVTransceive$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val bytesArg = args[1] as ByteArray val wrapped: List = try { listOf(api.nfcVTransceive(handleArg, bytesArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepGetMaxTransceiveLength$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.isoDepGetMaxTransceiveLength(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepGetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.isoDepGetTimeout(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepSetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val timeoutArg = args[1] as Long val wrapped: List = try { api.isoDepSetTimeout(handleArg, timeoutArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepTransceive$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val bytesArg = args[1] as ByteArray val wrapped: List = try { listOf(api.isoDepTransceive(handleArg, bytesArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicGetMaxTransceiveLength$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.mifareClassicGetMaxTransceiveLength(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicGetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.mifareClassicGetTimeout(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicSetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val timeoutArg = args[1] as Long val wrapped: List = try { api.mifareClassicSetTimeout(handleArg, timeoutArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicBlockToSector$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val blockIndexArg = args[1] as Long val wrapped: List = try { listOf(api.mifareClassicBlockToSector(handleArg, blockIndexArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicGetBlockCountInSector$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val sectorIndexArg = args[1] as Long val wrapped: List = try { listOf(api.mifareClassicGetBlockCountInSector(handleArg, sectorIndexArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicSectorToBlock$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val sectorIndexArg = args[1] as Long val wrapped: List = try { listOf(api.mifareClassicSectorToBlock(handleArg, sectorIndexArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicAuthenticateSectorWithKeyA$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val sectorIndexArg = args[1] as Long val keyArg = args[2] as ByteArray val wrapped: List = try { listOf(api.mifareClassicAuthenticateSectorWithKeyA(handleArg, sectorIndexArg, keyArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicAuthenticateSectorWithKeyB$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val sectorIndexArg = args[1] as Long val keyArg = args[2] as ByteArray val wrapped: List = try { listOf(api.mifareClassicAuthenticateSectorWithKeyB(handleArg, sectorIndexArg, keyArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicIncrement$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val blockIndexArg = args[1] as Long val valueArg = args[2] as Long val wrapped: List = try { api.mifareClassicIncrement(handleArg, blockIndexArg, valueArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicDecrement$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val blockIndexArg = args[1] as Long val valueArg = args[2] as Long val wrapped: List = try { api.mifareClassicDecrement(handleArg, blockIndexArg, valueArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicReadBlock$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val blockIndexArg = args[1] as Long val wrapped: List = try { listOf(api.mifareClassicReadBlock(handleArg, blockIndexArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicWriteBlock$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val blockIndexArg = args[1] as Long val dataArg = args[2] as ByteArray val wrapped: List = try { api.mifareClassicWriteBlock(handleArg, blockIndexArg, dataArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicRestore$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val blockIndexArg = args[1] as Long val wrapped: List = try { api.mifareClassicRestore(handleArg, blockIndexArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicTransfer$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val blockIndexArg = args[1] as Long val wrapped: List = try { api.mifareClassicTransfer(handleArg, blockIndexArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicTransceive$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val bytesArg = args[1] as ByteArray val wrapped: List = try { listOf(api.mifareClassicTransceive(handleArg, bytesArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightGetMaxTransceiveLength$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.mifareUltralightGetMaxTransceiveLength(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightGetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val wrapped: List = try { listOf(api.mifareUltralightGetTimeout(handleArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightSetTimeout$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val timeoutArg = args[1] as Long val wrapped: List = try { api.mifareUltralightSetTimeout(handleArg, timeoutArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightReadPages$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val pageOffsetArg = args[1] as Long val wrapped: List = try { listOf(api.mifareUltralightReadPages(handleArg, pageOffsetArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightWritePage$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val pageOffsetArg = args[1] as Long val dataArg = args[2] as ByteArray val wrapped: List = try { api.mifareUltralightWritePage(handleArg, pageOffsetArg, dataArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightTransceive$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val bytesArg = args[1] as ByteArray val wrapped: List = try { listOf(api.mifareUltralightTransceive(handleArg, bytesArg)) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefFormatableFormat$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val firstMessageArg = args[1] as NdefMessagePigeon val wrapped: List = try { api.ndefFormatableFormat(handleArg, firstMessageArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } run { val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefFormatableFormatReadOnly$separatedMessageChannelSuffix", codec) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val handleArg = args[0] as String val firstMessageArg = args[1] as NdefMessagePigeon val wrapped: List = try { api.ndefFormatableFormatReadOnly(handleArg, firstMessageArg) listOf(null) } catch (exception: Throwable) { PigeonPigeonUtils.wrapError(exception) } reply.reply(wrapped) } } else { channel.setMessageHandler(null) } } } } } ================================================ FILE: android/src/test/kotlin/dev/flutter/plugins/nfcmanager/NfcManagerPluginTest.kt ================================================ package dev.flutter.plugins.nfcmanager internal class NfcManagerPluginTest {} ================================================ FILE: example/.gitignore ================================================ # Miscellaneous *.class *.log *.pyc *.swp .DS_Store .atom/ .build/ .buildlog/ .history .svn/ .swiftpm/ migrate_working_dir/ # IntelliJ related *.iml *.ipr *.iws .idea/ # The .vscode folder contains launch configuration and tasks you configure in # VS Code which you may wish to be included in version control, so this line # is commented out by default. #.vscode/ # Flutter/Dart/Pub related **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ /coverage/ # Symbolication related app.*.symbols # Obfuscation related app.*.map.json # Android Studio will place build artifacts here /android/app/debug /android/app/profile /android/app/release ================================================ FILE: example/README.md ================================================ # nfc_manager_example Demonstrates how to use the nfc_manager plugin. ## Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is your first Flutter project: - [Learn Flutter](https://docs.flutter.dev/get-started/learn-flutter) - [Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) - [Flutter learning resources](https://docs.flutter.dev/reference/learning-resources) For help getting started with Flutter development, view the [online documentation](https://docs.flutter.dev/), which offers tutorials, samples, guidance on mobile development, and a full API reference. ================================================ FILE: example/analysis_options.yaml ================================================ include: package:flutter_lints/flutter.yaml ================================================ FILE: example/android/.gitignore ================================================ gradle-wrapper.jar /.gradle /captures/ /gradlew /gradlew.bat /local.properties GeneratedPluginRegistrant.java .cxx/ # Remember to never publicly share your keystore. # See https://flutter.dev/to/reference-keystore key.properties **/*.keystore **/*.jks ================================================ FILE: example/android/app/build.gradle.kts ================================================ plugins { id("com.android.application") id("kotlin-android") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") } android { namespace = "dev.flutter.plugins.nfcmanagerexample" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = JavaVersion.VERSION_17.toString() } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "dev.flutter.plugins.nfcmanagerexample" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName } buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig = signingConfigs.getByName("debug") } } } flutter { source = "../.." } ================================================ FILE: example/android/app/src/debug/AndroidManifest.xml ================================================ ================================================ FILE: example/android/app/src/main/AndroidManifest.xml ================================================ ================================================ FILE: example/android/app/src/main/kotlin/dev/flutter/plugins/nfcmanagerexample/MainActivity.kt ================================================ package dev.flutter.plugins.nfcmanagerexample import io.flutter.embedding.android.FlutterActivity class MainActivity : FlutterActivity() ================================================ FILE: example/android/app/src/main/res/drawable/launch_background.xml ================================================ ================================================ FILE: example/android/app/src/main/res/drawable-v21/launch_background.xml ================================================ ================================================ FILE: example/android/app/src/main/res/values/styles.xml ================================================ ================================================ FILE: example/android/app/src/main/res/values-night/styles.xml ================================================ ================================================ FILE: example/android/app/src/profile/AndroidManifest.xml ================================================ ================================================ FILE: example/android/build.gradle.kts ================================================ allprojects { repositories { google() mavenCentral() } } val newBuildDir: Directory = rootProject.layout.buildDirectory .dir("../../build") .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) project.layout.buildDirectory.value(newSubprojectBuildDir) } subprojects { project.evaluationDependsOn(":app") } tasks.register("clean") { delete(rootProject.layout.buildDirectory) } ================================================ FILE: example/android/gradle/wrapper/gradle-wrapper.properties ================================================ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip ================================================ FILE: example/android/gradle.properties ================================================ org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true ================================================ FILE: example/android/settings.gradle.kts ================================================ pluginManagement { val flutterSdkPath = run { val properties = java.util.Properties() file("local.properties").inputStream().use { properties.load(it) } val flutterSdkPath = properties.getProperty("flutter.sdk") require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } flutterSdkPath } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") repositories { google() mavenCentral() gradlePluginPortal() } } plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" id("com.android.application") version "8.11.1" apply false id("org.jetbrains.kotlin.android") version "2.2.20" apply false } include(":app") ================================================ FILE: example/ios/.gitignore ================================================ **/dgph *.mode1v3 *.mode2v3 *.moved-aside *.pbxuser *.perspectivev3 **/*sync/ .sconsign.dblite .tags* **/.vagrant/ **/DerivedData/ Icon? **/Pods/ **/.symlinks/ profile xcuserdata **/.generated/ Flutter/App.framework Flutter/Flutter.framework Flutter/Flutter.podspec Flutter/Generated.xcconfig Flutter/ephemeral/ Flutter/app.flx Flutter/app.zip Flutter/flutter_assets/ Flutter/flutter_export_environment.sh ServiceDefinitions.json Runner/GeneratedPluginRegistrant.* # Exceptions to above rules. !default.mode1v3 !default.mode2v3 !default.pbxuser !default.perspectivev3 ================================================ FILE: example/ios/Flutter/AppFrameworkInfo.plist ================================================ CFBundleDevelopmentRegion en CFBundleExecutable App CFBundleIdentifier io.flutter.flutter.app CFBundleInfoDictionaryVersion 6.0 CFBundleName App CFBundlePackageType FMWK CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1.0 ================================================ FILE: example/ios/Flutter/Debug.xcconfig ================================================ #include "Generated.xcconfig" ================================================ FILE: example/ios/Flutter/Release.xcconfig ================================================ #include "Generated.xcconfig" ================================================ FILE: example/ios/Runner/AppDelegate.swift ================================================ import Flutter import UIKit @main @objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { return super.application(application, didFinishLaunchingWithOptions: launchOptions) } func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) { GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry) } } ================================================ FILE: example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images" : [ { "size" : "20x20", "idiom" : "iphone", "filename" : "Icon-App-20x20@2x.png", "scale" : "2x" }, { "size" : "20x20", "idiom" : "iphone", "filename" : "Icon-App-20x20@3x.png", "scale" : "3x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "Icon-App-29x29@1x.png", "scale" : "1x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "Icon-App-29x29@2x.png", "scale" : "2x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "Icon-App-29x29@3x.png", "scale" : "3x" }, { "size" : "40x40", "idiom" : "iphone", "filename" : "Icon-App-40x40@2x.png", "scale" : "2x" }, { "size" : "40x40", "idiom" : "iphone", "filename" : "Icon-App-40x40@3x.png", "scale" : "3x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "Icon-App-60x60@2x.png", "scale" : "2x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "Icon-App-60x60@3x.png", "scale" : "3x" }, { "size" : "20x20", "idiom" : "ipad", "filename" : "Icon-App-20x20@1x.png", "scale" : "1x" }, { "size" : "20x20", "idiom" : "ipad", "filename" : "Icon-App-20x20@2x.png", "scale" : "2x" }, { "size" : "29x29", "idiom" : "ipad", "filename" : "Icon-App-29x29@1x.png", "scale" : "1x" }, { "size" : "29x29", "idiom" : "ipad", "filename" : "Icon-App-29x29@2x.png", "scale" : "2x" }, { "size" : "40x40", "idiom" : "ipad", "filename" : "Icon-App-40x40@1x.png", "scale" : "1x" }, { "size" : "40x40", "idiom" : "ipad", "filename" : "Icon-App-40x40@2x.png", "scale" : "2x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "Icon-App-76x76@1x.png", "scale" : "1x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "Icon-App-76x76@2x.png", "scale" : "2x" }, { "size" : "83.5x83.5", "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" }, { "size" : "1024x1024", "idiom" : "ios-marketing", "filename" : "Icon-App-1024x1024@1x.png", "scale" : "1x" } ], "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json ================================================ { "images" : [ { "idiom" : "universal", "filename" : "LaunchImage.png", "scale" : "1x" }, { "idiom" : "universal", "filename" : "LaunchImage@2x.png", "scale" : "2x" }, { "idiom" : "universal", "filename" : "LaunchImage@3x.png", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md ================================================ # Launch Screen Assets You can customize the launch screen with your own desired assets by replacing the image files in this directory. You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. ================================================ FILE: example/ios/Runner/Base.lproj/LaunchScreen.storyboard ================================================ ================================================ FILE: example/ios/Runner/Base.lproj/Main.storyboard ================================================ ================================================ FILE: example/ios/Runner/Info.plist ================================================ CADisableMinimumFrameDurationOnPhone CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName nfc_manager_example CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName nfc_manager_example CFBundlePackageType APPL CFBundleShortVersionString $(FLUTTER_BUILD_NAME) CFBundleSignature ???? CFBundleVersion $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS UIApplicationSceneManifest UIApplicationSupportsMultipleScenes UISceneConfigurations UIWindowSceneSessionRoleApplication UISceneClassName UIWindowScene UISceneConfigurationName flutter UISceneDelegateClassName $(PRODUCT_MODULE_NAME).SceneDelegate UISceneStoryboardFile Main UIApplicationSupportsIndirectInputEvents UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight ================================================ FILE: example/ios/Runner/Runner-Bridging-Header.h ================================================ #import "GeneratedPluginRegistrant.h" ================================================ FILE: example/ios/Runner/SceneDelegate.swift ================================================ import Flutter class SceneDelegate: FlutterSceneDelegate {} ================================================ FILE: example/ios/Runner.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 54; objects = { /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 7884E8682EC3CC0700C636F2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */; }; 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 97C146E61CF9000F007C117D /* Project object */; proxyType = 1; remoteGlobalIDString = 97C146ED1CF9000F007C117D; remoteInfo = Runner; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ 9705A1C41CF9048500538489 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( 331C807B294A618700263BE5 /* RunnerTests.swift */, ); path = RunnerTests; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 9740EEB31CF90195004384FC /* Generated.xcconfig */, ); name = Flutter; sourceTree = ""; }; 97C146E51CF9000F007C117D = { isa = PBXGroup; children = ( 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, ); sourceTree = ""; }; 97C146EF1CF9000F007C117D /* Products */ = { isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, 331C8081294A63A400263BE5 /* RunnerTests.xctest */, ); name = Products; sourceTree = ""; }; 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C147021CF9000F007C117D /* Info.plist */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */, 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, ); path = Runner; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 331C8080294A63A400263BE5 /* RunnerTests */ = { isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, ); buildRules = ( ); dependencies = ( 331C8086294A63A400263BE5 /* PBXTargetDependency */, ); name = RunnerTests; productName = RunnerTests; productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, ); buildRules = ( ); dependencies = ( ); name = Runner; packageProductDependencies = ( 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, ); productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C8080294A63A400263BE5 = { CreatedOnToolsVersion = 14.0; TestTargetID = 97C146ED1CF9000F007C117D; }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; }; }; }; buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 97C146E51CF9000F007C117D; packageReferences = ( 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */, ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, 331C8080294A63A400263BE5 /* RunnerTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 331C807F294A63A400263BE5 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); name = "Run Script"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 331C807D294A63A400263BE5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 7884E8682EC3CC0700C636F2 /* SceneDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 97C146ED1CF9000F007C117D /* Runner */; targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ 97C146FA1CF9000F007C117D /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( 97C146FB1CF9000F007C117D /* Base */, ); name = Main.storyboard; sourceTree = ""; }; 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( 97C147001CF9000F007C117D /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 249021D3217E4FDB00AE95B9 /* Profile */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Profile; }; 249021D4217E4FDB00AE95B9 /* Profile */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.nfcmanagerexample; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.nfcmanagerexample.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; name = Debug; }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.nfcmanagerexample.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; name = Release; }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.nfcmanagerexample.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; name = Profile; }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 97C147041CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 97C147061CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.nfcmanagerexample; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; }; 97C147071CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.nfcmanagerexample; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 331C8088294A63A400263BE5 /* Debug */, 331C8089294A63A400263BE5 /* Release */, 331C808A294A63A400263BE5 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( 97C147031CF9000F007C117D /* Debug */, 97C147041CF9000F007C117D /* Release */, 249021D3217E4FDB00AE95B9 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( 97C147061CF9000F007C117D /* Debug */, 97C147071CF9000F007C117D /* Release */, 249021D4217E4FDB00AE95B9 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ /* Begin XCLocalSwiftPackageReference section */ 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = { isa = XCLocalSwiftPackageReference; relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; }; /* End XCLocalSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { isa = XCSwiftPackageProductDependency; productName = FlutterGeneratedPluginSwiftPackage; }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; } ================================================ FILE: example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings ================================================ PreviewsEnabled ================================================ FILE: example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme ================================================ ================================================ FILE: example/ios/Runner.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings ================================================ PreviewsEnabled ================================================ FILE: example/ios/RunnerTests/RunnerTests.swift ================================================ import XCTest @testable import nfc_manager class RunnerTests: XCTestCase {} ================================================ FILE: example/lib/main.dart ================================================ import 'package:flutter/material.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); runApp(MaterialApp(home: Material(child: Center(child: Text('Hello World'))))); } ================================================ FILE: example/pubspec.yaml ================================================ name: nfc_manager_example description: Demonstrates how to use the nfc_manager plugin. publish_to: none environment: sdk: ^3.11.4 dependencies: flutter: sdk: flutter nfc_manager: path: ../ dev_dependencies: flutter_lints: ^6.0.0 flutter: uses-material-design: true ================================================ FILE: ios/.gitignore ================================================ .idea/ .vagrant/ .sconsign.dblite .svn/ .DS_Store *.swp profile DerivedData/ build/ GeneratedPluginRegistrant.h GeneratedPluginRegistrant.m .generated/ *.pbxuser *.mode1v3 *.mode2v3 *.perspectivev3 !default.pbxuser !default.mode1v3 !default.mode2v3 !default.perspectivev3 xcuserdata *.moved-aside *.pyc *sync/ Icon? .tags* /Flutter/Generated.xcconfig /Flutter/ephemeral/ /Flutter/flutter_export_environment.sh ================================================ FILE: ios/nfc_manager/Package.swift ================================================ // swift-tools-version: 5.9 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "nfc_manager", platforms: [ .iOS("13.0") ], products: [ .library(name: "nfc-manager", targets: ["nfc_manager"]) ], dependencies: [], targets: [ .target( name: "nfc_manager", dependencies: [], resources: [] ) ] ) ================================================ FILE: ios/nfc_manager/Sources/nfc_manager/NfcManagerPlugin.swift ================================================ import CoreNFC import Flutter public class NfcManagerPlugin: NSObject, FlutterPlugin, HostApiPigeon { private let flutterApi: FlutterApiPigeon private var shouldInvalidateSessionAfterFirstRead: Bool = true private var tagSession: NFCTagReaderSession? = nil private var vasSession: NFCVASReaderSession? = nil private var cachedTags: [String : NFCNDEFTag] = [:] public static func register(with registrar: FlutterPluginRegistrar) { HostApiPigeonSetup.setUp(binaryMessenger: registrar.messenger(), api: NfcManagerPlugin(binaryMessenger: registrar.messenger())) } private init(binaryMessenger: FlutterBinaryMessenger) { flutterApi = FlutterApiPigeon(binaryMessenger: binaryMessenger) } func tagSessionReadingAvailable() throws -> Bool { return NFCTagReaderSession.readingAvailable } func tagSessionBegin(pollingOptions: [PollingOptionPigeon], alertMessage: String?, invalidateAfterFirstRead: Bool) throws { if tagSession != nil || vasSession != nil { throw FlutterError(code: "session_already_exists", message: "Multiple sessions cannot be active at the same time.", details: nil) } tagSession = NFCTagReaderSession(pollingOption: convert(pollingOptions), delegate: self) if let alertMessage = alertMessage { tagSession?.alertMessage = alertMessage } shouldInvalidateSessionAfterFirstRead = invalidateAfterFirstRead tagSession?.begin() } func tagSessionInvalidate(alertMessage: String?, errorMessage: String?) throws { guard let tagSession = tagSession else { throw FlutterError(code: "no_active_sessions", message: "Session is not active.", details: nil) } if let alertMessage = alertMessage { tagSession.alertMessage = alertMessage } if let errorMessage = errorMessage { tagSession.invalidate(errorMessage: errorMessage) } else { tagSession.invalidate() } self.tagSession = nil cachedTags.removeAll() // Consider when to remove the tag. } func tagSessionRestartPolling() throws { guard let tagSession = tagSession else { throw FlutterError(code: "no_active_sessions", message: "Session is not active.", details: nil) } tagSession.restartPolling() } func tagSessionSetAlertMessage(alertMessage: String) throws { guard let tagSession = tagSession else { throw FlutterError(code: "no_active_sessions", message: "Session is not active.", details: nil) } tagSession.alertMessage = alertMessage } func vasSessionReadingAvailable() throws -> Bool { return NFCVASReaderSession.readingAvailable } func vasSessionBegin(configurations: [NfcVasCommandConfigurationPigeon], alertMessage: String?) throws { if vasSession != nil || tagSession != nil { throw FlutterError(code: "session_already_exists", message: "Multiple sessions cannot be active at the same time.", details: nil) } vasSession = NFCVASReaderSession(vasCommandConfigurations: configurations.map { convert($0) }, delegate: self, queue: nil) if let alertMessage = alertMessage { vasSession?.alertMessage = alertMessage } vasSession?.begin() } func vasSessionInvalidate(alertMessage: String?, errorMessage: String?) throws { guard let vasSession = vasSession else { throw FlutterError(code: "no_active_sessions", message: "Session is not active.", details: nil) } if let alertMessage = alertMessage { vasSession.alertMessage = alertMessage } if let errorMessage = errorMessage { vasSession.invalidate(errorMessage: errorMessage) } else { vasSession.invalidate() } self.vasSession = nil } func vasSessionSetAlertMessage(alertMessage: String) throws { guard let vasSession = vasSession else { throw FlutterError(code: "no_active_sessions", message: "Session is not active.", details: nil) } vasSession.alertMessage = alertMessage } func ndefQueryNdefStatus(handle: String, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.queryNDEFStatus { status, capacity, error in if let error = error { completion(.failure(error)) return } completion(.success(NdefQueryStatusPigeon(status: convert(status), capacity: Int64(capacity)))) } } func ndefReadNdef(handle: String, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.readNDEF { message, error in if let error = error { completion(.failure(error)) return } guard let message = message else { completion(.success(nil)) return } completion(.success(convert(message))) } } func ndefWriteNdef(handle: String, message: NdefMessagePigeon, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.writeNDEF(convert(message)) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func ndefWriteLock(handle: String, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.writeLock { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func feliCaPolling(handle: String, systemCode: FlutterStandardTypedData, requestCode: FeliCaPollingRequestCodePigeon, timeSlot: FeliCaPollingTimeSlotPigeon, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.polling(systemCode: systemCode.data, requestCode: convert(requestCode), timeSlot: convert(timeSlot)) { manufacturerParameter, requestData, error in if let error = error { completion(.failure(error)) return } completion(.success(FeliCaPollingResponsePigeon( manufacturerParameter: FlutterStandardTypedData(bytes: manufacturerParameter), requestData: FlutterStandardTypedData(bytes: requestData) ))) } } func feliCaRequestService(handle: String, nodeCodeList: [FlutterStandardTypedData], completion: @escaping (Result<[FlutterStandardTypedData], Error>) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.requestService(nodeCodeList: nodeCodeList.map { $0.data }) { nodeCodeList, error in if let error = error { completion(.failure(error)) return } completion(.success(nodeCodeList.map { FlutterStandardTypedData(bytes: $0) })) } } func feliCaRequestResponse(handle: String, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.requestResponse { mode, error in if let error = error { completion(.failure(error)) return } completion(.success(Int64(mode))) } } func feliCaReadWithoutEncryption(handle: String, serviceCodeList: [FlutterStandardTypedData], blockList: [FlutterStandardTypedData], completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.readWithoutEncryption(serviceCodeList: serviceCodeList.map { $0.data }, blockList: blockList.map { $0.data }) { statusFlag1, statusFlag2, blockData, error in if let error = error { completion(.failure(error)) return } completion(.success(FeliCaReadWithoutEncryptionResponsePigeon( statusFlag1: Int64(statusFlag1), statusFlag2: Int64(statusFlag2), blockData: blockData.map { FlutterStandardTypedData(bytes: $0) } ))) } } func feliCaWriteWithoutEncryption(handle: String, serviceCodeList: [FlutterStandardTypedData], blockList: [FlutterStandardTypedData], blockData: [FlutterStandardTypedData], completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.writeWithoutEncryption(serviceCodeList: serviceCodeList.map { $0.data }, blockList: blockList.map { $0.data }, blockData: blockData.map { $0.data }) { statusFlag1, statusFlag2, error in if let error = error { completion(.failure(error)) return } completion(.success(FeliCaStatusFlagPigeon( statusFlag1: Int64(statusFlag1), statusFlag2: Int64(statusFlag2) ))) } } func feliCaRequestSystemCode(handle: String, completion: @escaping (Result<[FlutterStandardTypedData], Error>) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.requestSystemCode() { systemCodeList, error in if let error = error { completion(.failure(error)) return } completion(.success(systemCodeList.map { FlutterStandardTypedData(bytes: $0) })) } } func feliCaRequestServiceV2(handle: String, nodeCodeList: [FlutterStandardTypedData], completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.requestServiceV2(nodeCodeList: nodeCodeList.map { $0.data }) { statusFlag1, statusFlag2, encryptionIdentifier, nodeKeyVersionListAes, nodeKeyVersionListDes, error in if let error = error { completion(.failure(error)) return } completion(.success(FeliCaRequestServiceV2ResponsePigeon( statusFlag1: Int64(statusFlag1), statusFlag2: Int64(statusFlag2), encryptionIdentifier: Int64(encryptionIdentifier.rawValue), nodeKeyVersionListAES: nodeKeyVersionListAes.map { FlutterStandardTypedData(bytes: $0) }, nodeKeyVersionListDES: nodeKeyVersionListDes.map { FlutterStandardTypedData(bytes: $0) } ))) } } func feliCaRequestSpecificationVersion(handle: String, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.requestSpecificationVersion() { statusFlag1, statusFlag2, basicVersion, optionVersion, error in if let error = error { completion(.failure(error)) return } completion(.success(FeliCaRequestSpecificationVersionResponsePigeon( statusFlag1: Int64(statusFlag1), statusFlag2: Int64(statusFlag2), basicVersion: FlutterStandardTypedData(bytes: basicVersion), optionVersion: FlutterStandardTypedData(bytes: optionVersion) ))) } } func feliCaResetMode(handle: String, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.resetMode() { statusFlag1, statusFlag2, error in if let error = error { completion(.failure(error)) return } completion(.success(FeliCaStatusFlagPigeon( statusFlag1: Int64(statusFlag1), statusFlag2: Int64(statusFlag2) ))) } } func feliCaSendFeliCaCommand(handle: String, commandPacket: FlutterStandardTypedData, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCFeliCaTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.sendFeliCaCommand(commandPacket: commandPacket.data) { data, error in if let error = error { completion(.failure(error)) return } completion(.success(FlutterStandardTypedData(bytes: data))) } } func miFareSendMiFareCommand(handle: String, commandPacket: FlutterStandardTypedData, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCMiFareTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.sendMiFareCommand(commandPacket: commandPacket.data) { data, error in if let error = error { completion(.failure(error)) return } completion(.success(FlutterStandardTypedData(bytes: data))) } } func miFareSendMiFareISO7816Command(handle: String, apdu: Iso7816ApduPigeon, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCMiFareTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.sendMiFareISO7816Command(convert(apdu)) { payload, statusWord1, statusWord2, error in if let error = error { completion(.failure(error)) return } completion(.success(Iso7816ResponseApduPigeon( payload: FlutterStandardTypedData(bytes: payload), statusWord1: Int64(statusWord1), statusWord2: Int64(statusWord2) ))) } } func miFareSendMiFareISO7816CommandRaw(handle: String, data: FlutterStandardTypedData, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCMiFareTag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.sendMiFareISO7816Command(NFCISO7816APDU(data: data.data)!) { payload, statusWord1, statusWord2, error in if let error = error { completion(.failure(error)) return } completion(.success(Iso7816ResponseApduPigeon( payload: FlutterStandardTypedData(bytes: payload), statusWord1: Int64(statusWord1), statusWord2: Int64(statusWord2) ))) } } func iso7816SendCommand(handle: String, apdu: Iso7816ApduPigeon, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO7816Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.sendCommand(apdu: convert(apdu)) { payload, statusWord1, statusWord2, error in if let error = error { completion(.failure(error)) return } completion(.success(Iso7816ResponseApduPigeon( payload: FlutterStandardTypedData(bytes: payload), statusWord1: Int64(statusWord1), statusWord2: Int64(statusWord2) ))) } } func iso7816SendCommandRaw(handle: String, data: FlutterStandardTypedData, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO7816Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.sendCommand(apdu: NFCISO7816APDU(data: data.data)!) { payload, statusWord1, statusWord2, error in if let error = error { completion(.failure(error)) return } completion(.success(Iso7816ResponseApduPigeon( payload: FlutterStandardTypedData(bytes: payload), statusWord1: Int64(statusWord1), statusWord2: Int64(statusWord2) ))) } } func iso15693StayQuiet(handle: String, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.stayQuiet() { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693ReadSingleBlock(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.readSingleBlock(requestFlags: convert(requestFlags), blockNumber: UInt8(blockNumber)) { dataBlock, error in if let error = error { completion(.failure(error)) return } completion(.success(FlutterStandardTypedData(bytes: dataBlock))) } } func iso15693WriteSingleBlock(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, dataBlock: FlutterStandardTypedData, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.writeSingleBlock(requestFlags: convert(requestFlags), blockNumber: UInt8(blockNumber), dataBlock: dataBlock.data) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693LockBlock(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.lockBlock(requestFlags: convert(requestFlags), blockNumber: UInt8(blockNumber)) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693ReadMultipleBlocks(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, numberOfBlocks: Int64, completion: @escaping (Result<[FlutterStandardTypedData], Error>) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.readMultipleBlocks(requestFlags: convert(requestFlags), blockRange: convert(blockNumber, numberOfBlocks)) { dataBlocks, error in if let error = error { completion(.failure(error)) return } completion(.success(dataBlocks.map { FlutterStandardTypedData(bytes: $0) })) } } func iso15693WriteMultipleBlocks(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, numberOfBlocks: Int64, dataBlocks: [FlutterStandardTypedData], completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.writeMultipleBlocks(requestFlags: convert(requestFlags), blockRange: convert(blockNumber, numberOfBlocks), dataBlocks: dataBlocks.map { $0.data }) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693Select(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.select(requestFlags: convert(requestFlags)) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693ResetToReady(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.resetToReady(requestFlags: convert(requestFlags)) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693WriteAfi(handle: String, requestFlags: [Iso15693RequestFlagPigeon], afi: Int64, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.writeAFI(requestFlags: convert(requestFlags), afi: UInt8(afi)) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693LockAfi(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.lockAFI(requestFlags: convert(requestFlags)) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693WriteDsfId(handle: String, requestFlags: [Iso15693RequestFlagPigeon], dsfId: Int64, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.writeDSFID(requestFlags: convert(requestFlags), dsfid: UInt8(dsfId)) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693LockDsfId(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.lockDFSID(requestFlags: convert(requestFlags)) { error in if let error = error { completion(.failure(error)) return } completion(.success(())) } } func iso15693GetSystemInfo(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.getSystemInfo(requestFlags: convert(requestFlags)) { dataStorageFormatIdentifier, applicationFamilyIdentifier, blockSize, totalBlocks, icReference, error in if let error = error { completion(.failure(error)) return } completion(.success(Iso15693SystemInfoPigeon( dataStorageFormatIdentifier: Int64(dataStorageFormatIdentifier), applicationFamilyIdentifier: Int64(applicationFamilyIdentifier), blockSize: Int64(blockSize), totalBlocks: Int64(totalBlocks), icReference: Int64(icReference) ))) } } func iso15693GetMultipleBlockSecurityStatus(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, numberOfBlocks: Int64, completion: @escaping (Result<[Int64], Error>) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.getMultipleBlockSecurityStatus(requestFlags: convert(requestFlags), blockRange: convert(blockNumber, numberOfBlocks)) { status, error in if let error = error { completion(.failure(error)) return } completion(.success(status.map { Int64(truncating: $0) })) } } func iso15693CustomCommand(handle: String, requestFlags: [Iso15693RequestFlagPigeon], customCommandCode: Int64, customRequestParameters: FlutterStandardTypedData, completion: @escaping (Result) -> Void) { guard let tag = cachedTags[handle] as? NFCISO15693Tag else { completion(.failure(FlutterError(code: "tag_not_found", message: "You may have disable the session.", details: nil))) return } tag.customCommand(requestFlags: convert(requestFlags), customCommandCode: Int(customCommandCode), customRequestParameters: customRequestParameters.data) { data, error in if let error = error { completion(.failure(error)) return } completion(.success(FlutterStandardTypedData(bytes: data))) } } } extension NfcManagerPlugin: NFCTagReaderSessionDelegate { public func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) { DispatchQueue.main.sync { flutterApi.tagSessionDidBecomeActive { _ in /* no op */ } } } public func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) { let pigeonError = NfcReaderSessionErrorPigeon( code: convert((error as! NFCReaderError).code), message: error.localizedDescription ) DispatchQueue.main.sync { flutterApi.tagSessionDidInvalidateWithError(error: pigeonError) { _ in /* no op */ } } } public func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) { session.connect(to: tags.first!) { error in if let error = error { // skip tag detection print(error) if !self.shouldInvalidateSessionAfterFirstRead { session.restartPolling() } return } convert(tags.first!) { tag, pigeon, error in if let error = error { // skip tag detection print(error) if !self.shouldInvalidateSessionAfterFirstRead { session.restartPolling() } return } guard let pigeon = pigeon else { // skip tag detection if !self.shouldInvalidateSessionAfterFirstRead { session.restartPolling() } return } self.cachedTags[pigeon.handle] = tag DispatchQueue.main.sync { self.flutterApi.tagSessionDidDetect(tag: pigeon) { _ in /* no op */ } } if !self.shouldInvalidateSessionAfterFirstRead { session.restartPolling() } } } } } extension NfcManagerPlugin: NFCVASReaderSessionDelegate { public func readerSessionDidBecomeActive(_ session: NFCVASReaderSession) { DispatchQueue.main.sync { flutterApi.vasSessionDidBecomeActive { _ in /* no op */ } } } public func readerSession(_ session: NFCVASReaderSession, didInvalidateWithError error: Error) { let pigeonError = NfcReaderSessionErrorPigeon( code: convert((error as! NFCReaderError).code), message: error.localizedDescription ) DispatchQueue.main.sync { flutterApi.vasSessionDidInvalidateWithError(error: pigeonError) { _ in /* no op */ } } } public func readerSession(_ session: NFCVASReaderSession, didReceive responses: [NFCVASResponse]) { DispatchQueue.main.sync { flutterApi.vasSessionDidReceive(responses: responses.map { convert($0) }) { _ in /* no op */ } } } } private func convert(_ value: NFCTag, _ completionHandler: @escaping (NFCNDEFTag, TagPigeon?, Error?) -> Void) { switch (value) { case .feliCa(let tag): convert(tag) { pigeon, error in completionHandler(tag, pigeon, error) } case .iso15693(let tag): convert(tag) { pigeon, error in completionHandler(tag, pigeon, error) } case .iso7816(let tag): convert(tag) { pigeon, error in completionHandler(tag, pigeon, error) } case .miFare(let tag): convert(tag) { pigeon, error in completionHandler(tag, pigeon, error) } @unknown default: fatalError() } } private func convert(_ value: NFCNDEFTag, _ completionHandler: @escaping (TagPigeon?, Error?) -> Void) { var pigeon = TagPigeon(handle: NSUUID().uuidString) if let value = value as? NFCFeliCaTag { pigeon.feliCa = FeliCaPigeon( currentSystemCode: FlutterStandardTypedData(bytes: value.currentSystemCode), currentIDm: FlutterStandardTypedData(bytes: value.currentIDm) ) } else if let value = value as? NFCISO15693Tag { pigeon.iso15693 = Iso15693Pigeon( icManufacturerCode: Int64(value.icManufacturerCode), icSerialNumber: FlutterStandardTypedData(bytes: value.icSerialNumber), identifier: FlutterStandardTypedData(bytes: value.identifier) ) } else if let value = value as? NFCISO7816Tag { pigeon.iso7816 = Iso7816Pigeon( initialSelectedAID: value.initialSelectedAID, identifier: FlutterStandardTypedData(bytes: value.identifier), historicalBytes: value.historicalBytes != nil ? FlutterStandardTypedData(bytes: value.historicalBytes!) : nil, applicationData: value.applicationData != nil ? FlutterStandardTypedData(bytes: value.applicationData!) : nil, proprietaryApplicationDataCoding: value.proprietaryApplicationDataCoding ) } else if let value = value as? NFCMiFareTag { pigeon.miFare = MiFarePigeon( mifareFamily: convert(value.mifareFamily), identifier: FlutterStandardTypedData(bytes: value.identifier), historicalBytes: value.historicalBytes != nil ? FlutterStandardTypedData(bytes: value.historicalBytes!) : nil ) } value.queryNDEFStatus { status, capacity, error in if let error = error { completionHandler(nil, error) return } pigeon.ndef = NdefPigeon( status: convert(status), capacity: Int64(capacity) ) if status == .notSupported { completionHandler(pigeon, nil) return } value.readNDEF { message, error in if let error = error as? NSError, error.code != 403 { completionHandler(nil, error) return } if let message = message { pigeon.ndef?.cachedNdefMessage = convert(message) } completionHandler(pigeon, nil) } } } private func convert(_ value: NdefMessagePigeon) -> NFCNDEFMessage { return NFCNDEFMessage( records: value.records.map { NFCNDEFPayload( format: convert($0.typeNameFormat), type: $0.type.data, identifier: $0.identifier.data, payload: $0.payload.data ) } ) } private func convert(_ value: NFCNDEFMessage) -> NdefMessagePigeon { return NdefMessagePigeon(records: value.records.map { convert($0) }) } private func convert(_ value: NFCNDEFPayload) -> NdefPayloadPigeon { return NdefPayloadPigeon( typeNameFormat: convert(value.typeNameFormat), type: FlutterStandardTypedData(bytes: value.type), identifier: FlutterStandardTypedData(bytes: value.identifier), payload: FlutterStandardTypedData(bytes: value.payload) ) } private func convert(_ value: [PollingOptionPigeon]) -> NFCTagReaderSession.PollingOption { var option = NFCTagReaderSession.PollingOption() value.forEach { option.insert(convert($0)) } return option } private func convert(_ value: PollingOptionPigeon) -> NFCTagReaderSession.PollingOption { switch (value) { case .iso14443: return .iso14443 case .iso15693: return .iso15693 case .iso18092: return .iso18092 } } private func convert(_ value: NFCNDEFStatus) -> NdefStatusPigeon { switch (value) { case .notSupported: return .notSupported case .readWrite: return .readWrite case .readOnly: return .readOnly default: fatalError() } } private func convert(_ value: FeliCaPollingRequestCodePigeon) -> PollingRequestCode { switch (value) { case .noRequest: return .noRequest case .systemCode: return .systemCode case .communicationPerformance: return .communicationPerformance } } private func convert(_ value: FeliCaPollingTimeSlotPigeon) -> PollingTimeSlot { switch (value) { case .max1: return .max1 case .max2: return .max2 case .max4: return .max4 case .max8: return .max8 case .max16: return .max16 } } private func convert(_ value: Iso7816ApduPigeon) -> NFCISO7816APDU { return NFCISO7816APDU( instructionClass: UInt8(value.instructionClass), instructionCode: UInt8(value.instructionCode), p1Parameter: UInt8(value.p1Parameter), p2Parameter: UInt8(value.p2Parameter), data: value.data.data, expectedResponseLength: Int(value.expectedResponseLength) ) } private func convert(_ value: [Iso15693RequestFlagPigeon]) -> RequestFlag { var flag = RequestFlag() value.forEach { flag.insert(convert($0)) } return flag } private func convert(_ value: NfcVasCommandConfigurationPigeon) -> NFCVASCommandConfiguration { return NFCVASCommandConfiguration( vasMode: convert(value.mode), passTypeIdentifier: value.passIdentifier, url: (value.url == nil) ? nil : URL(string: value.url!) ) } private func convert(_ value: NFCVASResponse) -> NfcVasResponsePigeon { return NfcVasResponsePigeon( status: convert(value.status), vasData: FlutterStandardTypedData(bytes: value.vasData), mobileToken: FlutterStandardTypedData(bytes: value.mobileToken) ) } private func convert(_ value: Iso15693RequestFlagPigeon) -> RequestFlag { switch (value) { case .address: return .address case .dualSubCarriers: return .dualSubCarriers case .highDataRate: return .highDataRate case .option: return .option case .protocolExtension: return .protocolExtension case .select: return .select } } private func convert(_ value: NFCMiFareFamily) -> MiFareFamilyPigeon { switch (value) { case .unknown: return .unknown case .ultralight: return .ultralight case .plus: return .plus case .desfire: return .desfire @unknown default: fatalError() } } private func convert(_ value: TypeNameFormatPigeon) -> NFCTypeNameFormat { switch (value) { case .empty: return .empty case .wellKnown: return .nfcWellKnown case .media: return .media case .absoluteUri: return .absoluteURI case .external: return .nfcExternal case .unknown: return .unknown case .unchanged: return .unchanged } } private func convert(_ value: NFCTypeNameFormat) -> TypeNameFormatPigeon { switch (value) { case .empty: return .empty case .nfcWellKnown: return .wellKnown case .media: return .media case .absoluteURI: return .absoluteUri case .nfcExternal: return .external case .unknown: return .unknown case .unchanged: return .unchanged @unknown default: fatalError() } } private func convert(_ value: NfcVasCommandConfigurationModePigeon) -> NFCVASCommandConfiguration.Mode { switch value { case .normal: return .normal case .urlOnly: return .urlOnly } } private func convert(_ value: NFCReaderError.Code) -> NfcReaderErrorCodePigeon { switch value { case .readerSessionInvalidationErrorFirstNDEFTagRead: return .readerSessionInvalidationErrorFirstNdefTagRead case .readerSessionInvalidationErrorSessionTerminatedUnexpectedly: return .readerSessionInvalidationErrorSessionTerminatedUnexpectedly case .readerSessionInvalidationErrorSessionTimeout: return .readerSessionInvalidationErrorSessionTimeout case .readerSessionInvalidationErrorSystemIsBusy: return .readerSessionInvalidationErrorSystemIsBusy case .readerSessionInvalidationErrorUserCanceled: return .readerSessionInvalidationErrorUserCanceled case .ndefReaderSessionErrorTagNotWritable: return .ndefReaderSessionErrorTagNotWritable case .ndefReaderSessionErrorTagSizeTooSmall: return .ndefReaderSessionErrorTagSizeTooSmall case .ndefReaderSessionErrorTagUpdateFailure: return .ndefReaderSessionErrorTagUpdateFailure case .ndefReaderSessionErrorZeroLengthMessage: return .ndefReaderSessionErrorZeroLengthMessage case .readerTransceiveErrorRetryExceeded: return .readerTransceiveErrorRetryExceeded case .readerTransceiveErrorTagConnectionLost: return .readerTransceiveErrorTagConnectionLost case .readerTransceiveErrorTagNotConnected: return .readerTransceiveErrorTagNotConnected case .readerTransceiveErrorTagResponseError: return .readerTransceiveErrorTagResponseError case .readerTransceiveErrorSessionInvalidated: return .readerTransceiveErrorSessionInvalidated case .readerTransceiveErrorPacketTooLong: return .readerTransceiveErrorPacketTooLong case .tagCommandConfigurationErrorInvalidParameters: return .tagCommandConfigurationErrorInvalidParameters case .readerErrorUnsupportedFeature: return .readerErrorUnsupportedFeature case .readerErrorInvalidParameter: return .readerErrorInvalidParameter case .readerErrorInvalidParameterLength: return .readerErrorInvalidParameterLength case .readerErrorParameterOutOfBound: return .readerErrorParameterOutOfBound case .readerErrorRadioDisabled: return .readerErrorRadioDisabled case .readerErrorSecurityViolation: return .readerErrorSecurityViolation default: // Introduced in iOS SDK 26; since we added it before 26 was widely adopted, compare `rawValue` to maintain backward compatibility. // See: https://github.com/okadan/flutter-nfc-manager/issues/249 if (value.rawValue == 7) { return .readerErrorIneligible } if (value.rawValue == 8) { return .readerErrorAccessNotAccepted } fatalError() } } private func convert(_ value: NFCVASResponse.ErrorCode) -> NfcVasResponseErrorCodePigeon { switch (value) { case .success: return .success case .userIntervention: return .userIntervention case .dataNotActivated: return .dataNotActivated case .dataNotFound: return .dataNotFound case .incorrectData: return .incorrectData case .unsupportedApplicationVersion: return .unsupportedApplicationVersion case .wrongLCField: return .wrongLCField case .wrongParameters: return .wrongParameters @unknown default: fatalError() } } private func convert(_ value1: Int64, _ value2: Int64) -> NSRange { return NSRange(location: Int(value1), length: Int(value2)) } extension FlutterError: Error {} ================================================ FILE: ios/nfc_manager/Sources/nfc_manager/Pigeon.swift ================================================ // Autogenerated from Pigeon (v26.3.3), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation #if os(iOS) import Flutter #elseif os(macOS) import FlutterMacOS #else #error("Unsupported platform.") #endif /// Error class for passing custom error details to Dart side. final class PigeonError: Error { let code: String let message: String? let details: Sendable? init(code: String, message: String?, details: Sendable?) { self.code = code self.message = message self.details = details } var localizedDescription: String { return "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" } } private func wrapResult(_ result: Any?) -> [Any?] { return [result] } private func wrapError(_ error: Any) -> [Any?] { if let pigeonError = error as? PigeonError { return [ pigeonError.code, pigeonError.message, pigeonError.details, ] } if let flutterError = error as? FlutterError { return [ flutterError.code, flutterError.message, flutterError.details, ] } return [ "\(error)", "\(Swift.type(of: error))", "Stacktrace: \(Thread.callStackSymbols)", ] } private func createConnectionError(withChannelName channelName: String) -> PigeonError { return PigeonError(code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", details: "") } private func isNullish(_ value: Any?) -> Bool { return value is NSNull || value == nil } private func nilOrValue(_ value: Any?) -> T? { if value is NSNull { return nil } return value as! T? } private func doubleEqualsPigeon(_ lhs: Double, _ rhs: Double) -> Bool { return (lhs.isNaN && rhs.isNaN) || lhs == rhs } private func doubleHashPigeon(_ value: Double, _ hasher: inout Hasher) { if value.isNaN { hasher.combine(0x7FF8000000000000) } else { // Normalize -0.0 to 0.0 hasher.combine(value == 0 ? 0 : value) } } func deepEqualsPigeon(_ lhs: Any?, _ rhs: Any?) -> Bool { let cleanLhs = nilOrValue(lhs) as Any? let cleanRhs = nilOrValue(rhs) as Any? switch (cleanLhs, cleanRhs) { case (nil, nil): return true case (nil, _), (_, nil): return false case (let lhs as AnyObject, let rhs as AnyObject) where lhs === rhs: return true case is (Void, Void): return true case (let lhsArray, let rhsArray) as ([Any?], [Any?]): guard lhsArray.count == rhsArray.count else { return false } for (index, element) in lhsArray.enumerated() { if !deepEqualsPigeon(element, rhsArray[index]) { return false } } return true case (let lhsArray, let rhsArray) as ([Double], [Double]): guard lhsArray.count == rhsArray.count else { return false } for (index, element) in lhsArray.enumerated() { if !doubleEqualsPigeon(element, rhsArray[index]) { return false } } return true case (let lhsDictionary, let rhsDictionary) as ([AnyHashable: Any?], [AnyHashable: Any?]): guard lhsDictionary.count == rhsDictionary.count else { return false } for (lhsKey, lhsValue) in lhsDictionary { var found = false for (rhsKey, rhsValue) in rhsDictionary { if deepEqualsPigeon(lhsKey, rhsKey) { if deepEqualsPigeon(lhsValue, rhsValue) { found = true break } else { return false } } } if !found { return false } } return true case (let lhs as Double, let rhs as Double): return doubleEqualsPigeon(lhs, rhs) case (let lhsHashable, let rhsHashable) as (AnyHashable, AnyHashable): return lhsHashable == rhsHashable default: return false } } func deepHashPigeon(value: Any?, hasher: inout Hasher) { let cleanValue = nilOrValue(value) as Any? if let cleanValue = cleanValue { if let doubleValue = cleanValue as? Double { doubleHashPigeon(doubleValue, &hasher) } else if let valueList = cleanValue as? [Any?] { for item in valueList { deepHashPigeon(value: item, hasher: &hasher) } } else if let valueList = cleanValue as? [Double] { for item in valueList { doubleHashPigeon(item, &hasher) } } else if let valueDict = cleanValue as? [AnyHashable: Any?] { var result = 0 for (key, value) in valueDict { var entryKeyHasher = Hasher() deepHashPigeon(value: key, hasher: &entryKeyHasher) var entryValueHasher = Hasher() deepHashPigeon(value: value, hasher: &entryValueHasher) result = result &+ ((entryKeyHasher.finalize() &* 31) ^ entryValueHasher.finalize()) } hasher.combine(result) } else if let hashableValue = cleanValue as? AnyHashable { hasher.combine(hashableValue) } else { hasher.combine(String(describing: cleanValue)) } } else { hasher.combine(0) } } enum PollingOptionPigeon: Int { case iso14443 = 0 case iso15693 = 1 case iso18092 = 2 } enum NdefStatusPigeon: Int { case notSupported = 0 case readWrite = 1 case readOnly = 2 } enum TypeNameFormatPigeon: Int { case empty = 0 case wellKnown = 1 case media = 2 case absoluteUri = 3 case external = 4 case unknown = 5 case unchanged = 6 } enum FeliCaPollingRequestCodePigeon: Int { case noRequest = 0 case systemCode = 1 case communicationPerformance = 2 } enum FeliCaPollingTimeSlotPigeon: Int { case max1 = 0 case max2 = 1 case max4 = 2 case max8 = 3 case max16 = 4 } enum MiFareFamilyPigeon: Int { case unknown = 0 case ultralight = 1 case plus = 2 case desfire = 3 } enum Iso15693RequestFlagPigeon: Int { case address = 0 case dualSubCarriers = 1 case highDataRate = 2 case option = 3 case protocolExtension = 4 case select = 5 } enum NfcVasCommandConfigurationModePigeon: Int { case normal = 0 case urlOnly = 1 } enum NfcReaderErrorCodePigeon: Int { case readerSessionInvalidationErrorFirstNdefTagRead = 0 case readerSessionInvalidationErrorSessionTerminatedUnexpectedly = 1 case readerSessionInvalidationErrorSessionTimeout = 2 case readerSessionInvalidationErrorSystemIsBusy = 3 case readerSessionInvalidationErrorUserCanceled = 4 case ndefReaderSessionErrorTagNotWritable = 5 case ndefReaderSessionErrorTagSizeTooSmall = 6 case ndefReaderSessionErrorTagUpdateFailure = 7 case ndefReaderSessionErrorZeroLengthMessage = 8 case readerTransceiveErrorRetryExceeded = 9 case readerTransceiveErrorTagConnectionLost = 10 case readerTransceiveErrorTagNotConnected = 11 case readerTransceiveErrorTagResponseError = 12 case readerTransceiveErrorSessionInvalidated = 13 case readerTransceiveErrorPacketTooLong = 14 case tagCommandConfigurationErrorInvalidParameters = 15 case readerErrorAccessNotAccepted = 16 case readerErrorIneligible = 17 case readerErrorUnsupportedFeature = 18 case readerErrorInvalidParameter = 19 case readerErrorInvalidParameterLength = 20 case readerErrorParameterOutOfBound = 21 case readerErrorRadioDisabled = 22 case readerErrorSecurityViolation = 23 } enum NfcVasResponseErrorCodePigeon: Int { case success = 0 case userIntervention = 1 case dataNotActivated = 2 case dataNotFound = 3 case incorrectData = 4 case unsupportedApplicationVersion = 5 case wrongLCField = 6 case wrongParameters = 7 } /// Generated class from Pigeon that represents data sent in messages. struct TagPigeon: Hashable { var handle: String var ndef: NdefPigeon? = nil var feliCa: FeliCaPigeon? = nil var iso15693: Iso15693Pigeon? = nil var iso7816: Iso7816Pigeon? = nil var miFare: MiFarePigeon? = nil // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> TagPigeon? { let handle = pigeonVar_list[0] as! String let ndef: NdefPigeon? = nilOrValue(pigeonVar_list[1]) let feliCa: FeliCaPigeon? = nilOrValue(pigeonVar_list[2]) let iso15693: Iso15693Pigeon? = nilOrValue(pigeonVar_list[3]) let iso7816: Iso7816Pigeon? = nilOrValue(pigeonVar_list[4]) let miFare: MiFarePigeon? = nilOrValue(pigeonVar_list[5]) return TagPigeon( handle: handle, ndef: ndef, feliCa: feliCa, iso15693: iso15693, iso7816: iso7816, miFare: miFare ) } func toList() -> [Any?] { return [ handle, ndef, feliCa, iso15693, iso7816, miFare, ] } static func == (lhs: TagPigeon, rhs: TagPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.handle, rhs.handle) && deepEqualsPigeon(lhs.ndef, rhs.ndef) && deepEqualsPigeon(lhs.feliCa, rhs.feliCa) && deepEqualsPigeon(lhs.iso15693, rhs.iso15693) && deepEqualsPigeon(lhs.iso7816, rhs.iso7816) && deepEqualsPigeon(lhs.miFare, rhs.miFare) } func hash(into hasher: inout Hasher) { hasher.combine("TagPigeon") deepHashPigeon(value: handle, hasher: &hasher) deepHashPigeon(value: ndef, hasher: &hasher) deepHashPigeon(value: feliCa, hasher: &hasher) deepHashPigeon(value: iso15693, hasher: &hasher) deepHashPigeon(value: iso7816, hasher: &hasher) deepHashPigeon(value: miFare, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct NdefPigeon: Hashable { var status: NdefStatusPigeon var capacity: Int64 var cachedNdefMessage: NdefMessagePigeon? = nil // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> NdefPigeon? { let status = pigeonVar_list[0] as! NdefStatusPigeon let capacity = pigeonVar_list[1] as! Int64 let cachedNdefMessage: NdefMessagePigeon? = nilOrValue(pigeonVar_list[2]) return NdefPigeon( status: status, capacity: capacity, cachedNdefMessage: cachedNdefMessage ) } func toList() -> [Any?] { return [ status, capacity, cachedNdefMessage, ] } static func == (lhs: NdefPigeon, rhs: NdefPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.status, rhs.status) && deepEqualsPigeon(lhs.capacity, rhs.capacity) && deepEqualsPigeon(lhs.cachedNdefMessage, rhs.cachedNdefMessage) } func hash(into hasher: inout Hasher) { hasher.combine("NdefPigeon") deepHashPigeon(value: status, hasher: &hasher) deepHashPigeon(value: capacity, hasher: &hasher) deepHashPigeon(value: cachedNdefMessage, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct FeliCaPigeon: Hashable { var currentSystemCode: FlutterStandardTypedData var currentIDm: FlutterStandardTypedData // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> FeliCaPigeon? { let currentSystemCode = pigeonVar_list[0] as! FlutterStandardTypedData let currentIDm = pigeonVar_list[1] as! FlutterStandardTypedData return FeliCaPigeon( currentSystemCode: currentSystemCode, currentIDm: currentIDm ) } func toList() -> [Any?] { return [ currentSystemCode, currentIDm, ] } static func == (lhs: FeliCaPigeon, rhs: FeliCaPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.currentSystemCode, rhs.currentSystemCode) && deepEqualsPigeon(lhs.currentIDm, rhs.currentIDm) } func hash(into hasher: inout Hasher) { hasher.combine("FeliCaPigeon") deepHashPigeon(value: currentSystemCode, hasher: &hasher) deepHashPigeon(value: currentIDm, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct Iso15693Pigeon: Hashable { var icManufacturerCode: Int64 var icSerialNumber: FlutterStandardTypedData var identifier: FlutterStandardTypedData // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> Iso15693Pigeon? { let icManufacturerCode = pigeonVar_list[0] as! Int64 let icSerialNumber = pigeonVar_list[1] as! FlutterStandardTypedData let identifier = pigeonVar_list[2] as! FlutterStandardTypedData return Iso15693Pigeon( icManufacturerCode: icManufacturerCode, icSerialNumber: icSerialNumber, identifier: identifier ) } func toList() -> [Any?] { return [ icManufacturerCode, icSerialNumber, identifier, ] } static func == (lhs: Iso15693Pigeon, rhs: Iso15693Pigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.icManufacturerCode, rhs.icManufacturerCode) && deepEqualsPigeon(lhs.icSerialNumber, rhs.icSerialNumber) && deepEqualsPigeon(lhs.identifier, rhs.identifier) } func hash(into hasher: inout Hasher) { hasher.combine("Iso15693Pigeon") deepHashPigeon(value: icManufacturerCode, hasher: &hasher) deepHashPigeon(value: icSerialNumber, hasher: &hasher) deepHashPigeon(value: identifier, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct Iso7816Pigeon: Hashable { var initialSelectedAID: String var identifier: FlutterStandardTypedData var historicalBytes: FlutterStandardTypedData? = nil var applicationData: FlutterStandardTypedData? = nil var proprietaryApplicationDataCoding: Bool // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> Iso7816Pigeon? { let initialSelectedAID = pigeonVar_list[0] as! String let identifier = pigeonVar_list[1] as! FlutterStandardTypedData let historicalBytes: FlutterStandardTypedData? = nilOrValue(pigeonVar_list[2]) let applicationData: FlutterStandardTypedData? = nilOrValue(pigeonVar_list[3]) let proprietaryApplicationDataCoding = pigeonVar_list[4] as! Bool return Iso7816Pigeon( initialSelectedAID: initialSelectedAID, identifier: identifier, historicalBytes: historicalBytes, applicationData: applicationData, proprietaryApplicationDataCoding: proprietaryApplicationDataCoding ) } func toList() -> [Any?] { return [ initialSelectedAID, identifier, historicalBytes, applicationData, proprietaryApplicationDataCoding, ] } static func == (lhs: Iso7816Pigeon, rhs: Iso7816Pigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.initialSelectedAID, rhs.initialSelectedAID) && deepEqualsPigeon(lhs.identifier, rhs.identifier) && deepEqualsPigeon(lhs.historicalBytes, rhs.historicalBytes) && deepEqualsPigeon(lhs.applicationData, rhs.applicationData) && deepEqualsPigeon(lhs.proprietaryApplicationDataCoding, rhs.proprietaryApplicationDataCoding) } func hash(into hasher: inout Hasher) { hasher.combine("Iso7816Pigeon") deepHashPigeon(value: initialSelectedAID, hasher: &hasher) deepHashPigeon(value: identifier, hasher: &hasher) deepHashPigeon(value: historicalBytes, hasher: &hasher) deepHashPigeon(value: applicationData, hasher: &hasher) deepHashPigeon(value: proprietaryApplicationDataCoding, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct MiFarePigeon: Hashable { var mifareFamily: MiFareFamilyPigeon var identifier: FlutterStandardTypedData var historicalBytes: FlutterStandardTypedData? = nil // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> MiFarePigeon? { let mifareFamily = pigeonVar_list[0] as! MiFareFamilyPigeon let identifier = pigeonVar_list[1] as! FlutterStandardTypedData let historicalBytes: FlutterStandardTypedData? = nilOrValue(pigeonVar_list[2]) return MiFarePigeon( mifareFamily: mifareFamily, identifier: identifier, historicalBytes: historicalBytes ) } func toList() -> [Any?] { return [ mifareFamily, identifier, historicalBytes, ] } static func == (lhs: MiFarePigeon, rhs: MiFarePigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.mifareFamily, rhs.mifareFamily) && deepEqualsPigeon(lhs.identifier, rhs.identifier) && deepEqualsPigeon(lhs.historicalBytes, rhs.historicalBytes) } func hash(into hasher: inout Hasher) { hasher.combine("MiFarePigeon") deepHashPigeon(value: mifareFamily, hasher: &hasher) deepHashPigeon(value: identifier, hasher: &hasher) deepHashPigeon(value: historicalBytes, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct NdefQueryStatusPigeon: Hashable { var status: NdefStatusPigeon var capacity: Int64 // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> NdefQueryStatusPigeon? { let status = pigeonVar_list[0] as! NdefStatusPigeon let capacity = pigeonVar_list[1] as! Int64 return NdefQueryStatusPigeon( status: status, capacity: capacity ) } func toList() -> [Any?] { return [ status, capacity, ] } static func == (lhs: NdefQueryStatusPigeon, rhs: NdefQueryStatusPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.status, rhs.status) && deepEqualsPigeon(lhs.capacity, rhs.capacity) } func hash(into hasher: inout Hasher) { hasher.combine("NdefQueryStatusPigeon") deepHashPigeon(value: status, hasher: &hasher) deepHashPigeon(value: capacity, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct NdefMessagePigeon: Hashable { var records: [NdefPayloadPigeon] // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> NdefMessagePigeon? { let records = pigeonVar_list[0] as! [NdefPayloadPigeon] return NdefMessagePigeon( records: records ) } func toList() -> [Any?] { return [ records ] } static func == (lhs: NdefMessagePigeon, rhs: NdefMessagePigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.records, rhs.records) } func hash(into hasher: inout Hasher) { hasher.combine("NdefMessagePigeon") deepHashPigeon(value: records, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct NdefPayloadPigeon: Hashable { var typeNameFormat: TypeNameFormatPigeon var type: FlutterStandardTypedData var identifier: FlutterStandardTypedData var payload: FlutterStandardTypedData // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> NdefPayloadPigeon? { let typeNameFormat = pigeonVar_list[0] as! TypeNameFormatPigeon let type = pigeonVar_list[1] as! FlutterStandardTypedData let identifier = pigeonVar_list[2] as! FlutterStandardTypedData let payload = pigeonVar_list[3] as! FlutterStandardTypedData return NdefPayloadPigeon( typeNameFormat: typeNameFormat, type: type, identifier: identifier, payload: payload ) } func toList() -> [Any?] { return [ typeNameFormat, type, identifier, payload, ] } static func == (lhs: NdefPayloadPigeon, rhs: NdefPayloadPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.typeNameFormat, rhs.typeNameFormat) && deepEqualsPigeon(lhs.type, rhs.type) && deepEqualsPigeon(lhs.identifier, rhs.identifier) && deepEqualsPigeon(lhs.payload, rhs.payload) } func hash(into hasher: inout Hasher) { hasher.combine("NdefPayloadPigeon") deepHashPigeon(value: typeNameFormat, hasher: &hasher) deepHashPigeon(value: type, hasher: &hasher) deepHashPigeon(value: identifier, hasher: &hasher) deepHashPigeon(value: payload, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct FeliCaPollingResponsePigeon: Hashable { var manufacturerParameter: FlutterStandardTypedData var requestData: FlutterStandardTypedData? = nil // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> FeliCaPollingResponsePigeon? { let manufacturerParameter = pigeonVar_list[0] as! FlutterStandardTypedData let requestData: FlutterStandardTypedData? = nilOrValue(pigeonVar_list[1]) return FeliCaPollingResponsePigeon( manufacturerParameter: manufacturerParameter, requestData: requestData ) } func toList() -> [Any?] { return [ manufacturerParameter, requestData, ] } static func == (lhs: FeliCaPollingResponsePigeon, rhs: FeliCaPollingResponsePigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.manufacturerParameter, rhs.manufacturerParameter) && deepEqualsPigeon(lhs.requestData, rhs.requestData) } func hash(into hasher: inout Hasher) { hasher.combine("FeliCaPollingResponsePigeon") deepHashPigeon(value: manufacturerParameter, hasher: &hasher) deepHashPigeon(value: requestData, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct FeliCaReadWithoutEncryptionResponsePigeon: Hashable { var statusFlag1: Int64 var statusFlag2: Int64 var blockData: [FlutterStandardTypedData] // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> FeliCaReadWithoutEncryptionResponsePigeon? { let statusFlag1 = pigeonVar_list[0] as! Int64 let statusFlag2 = pigeonVar_list[1] as! Int64 let blockData = pigeonVar_list[2] as! [FlutterStandardTypedData] return FeliCaReadWithoutEncryptionResponsePigeon( statusFlag1: statusFlag1, statusFlag2: statusFlag2, blockData: blockData ) } func toList() -> [Any?] { return [ statusFlag1, statusFlag2, blockData, ] } static func == (lhs: FeliCaReadWithoutEncryptionResponsePigeon, rhs: FeliCaReadWithoutEncryptionResponsePigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.statusFlag1, rhs.statusFlag1) && deepEqualsPigeon(lhs.statusFlag2, rhs.statusFlag2) && deepEqualsPigeon(lhs.blockData, rhs.blockData) } func hash(into hasher: inout Hasher) { hasher.combine("FeliCaReadWithoutEncryptionResponsePigeon") deepHashPigeon(value: statusFlag1, hasher: &hasher) deepHashPigeon(value: statusFlag2, hasher: &hasher) deepHashPigeon(value: blockData, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct FeliCaRequestServiceV2ResponsePigeon: Hashable { var statusFlag1: Int64 var statusFlag2: Int64 var encryptionIdentifier: Int64 var nodeKeyVersionListAES: [FlutterStandardTypedData]? = nil var nodeKeyVersionListDES: [FlutterStandardTypedData]? = nil // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> FeliCaRequestServiceV2ResponsePigeon? { let statusFlag1 = pigeonVar_list[0] as! Int64 let statusFlag2 = pigeonVar_list[1] as! Int64 let encryptionIdentifier = pigeonVar_list[2] as! Int64 let nodeKeyVersionListAES: [FlutterStandardTypedData]? = nilOrValue(pigeonVar_list[3]) let nodeKeyVersionListDES: [FlutterStandardTypedData]? = nilOrValue(pigeonVar_list[4]) return FeliCaRequestServiceV2ResponsePigeon( statusFlag1: statusFlag1, statusFlag2: statusFlag2, encryptionIdentifier: encryptionIdentifier, nodeKeyVersionListAES: nodeKeyVersionListAES, nodeKeyVersionListDES: nodeKeyVersionListDES ) } func toList() -> [Any?] { return [ statusFlag1, statusFlag2, encryptionIdentifier, nodeKeyVersionListAES, nodeKeyVersionListDES, ] } static func == (lhs: FeliCaRequestServiceV2ResponsePigeon, rhs: FeliCaRequestServiceV2ResponsePigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.statusFlag1, rhs.statusFlag1) && deepEqualsPigeon(lhs.statusFlag2, rhs.statusFlag2) && deepEqualsPigeon(lhs.encryptionIdentifier, rhs.encryptionIdentifier) && deepEqualsPigeon(lhs.nodeKeyVersionListAES, rhs.nodeKeyVersionListAES) && deepEqualsPigeon(lhs.nodeKeyVersionListDES, rhs.nodeKeyVersionListDES) } func hash(into hasher: inout Hasher) { hasher.combine("FeliCaRequestServiceV2ResponsePigeon") deepHashPigeon(value: statusFlag1, hasher: &hasher) deepHashPigeon(value: statusFlag2, hasher: &hasher) deepHashPigeon(value: encryptionIdentifier, hasher: &hasher) deepHashPigeon(value: nodeKeyVersionListAES, hasher: &hasher) deepHashPigeon(value: nodeKeyVersionListDES, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct FeliCaRequestSpecificationVersionResponsePigeon: Hashable { var statusFlag1: Int64 var statusFlag2: Int64 var basicVersion: FlutterStandardTypedData? = nil var optionVersion: FlutterStandardTypedData? = nil // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> FeliCaRequestSpecificationVersionResponsePigeon? { let statusFlag1 = pigeonVar_list[0] as! Int64 let statusFlag2 = pigeonVar_list[1] as! Int64 let basicVersion: FlutterStandardTypedData? = nilOrValue(pigeonVar_list[2]) let optionVersion: FlutterStandardTypedData? = nilOrValue(pigeonVar_list[3]) return FeliCaRequestSpecificationVersionResponsePigeon( statusFlag1: statusFlag1, statusFlag2: statusFlag2, basicVersion: basicVersion, optionVersion: optionVersion ) } func toList() -> [Any?] { return [ statusFlag1, statusFlag2, basicVersion, optionVersion, ] } static func == (lhs: FeliCaRequestSpecificationVersionResponsePigeon, rhs: FeliCaRequestSpecificationVersionResponsePigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.statusFlag1, rhs.statusFlag1) && deepEqualsPigeon(lhs.statusFlag2, rhs.statusFlag2) && deepEqualsPigeon(lhs.basicVersion, rhs.basicVersion) && deepEqualsPigeon(lhs.optionVersion, rhs.optionVersion) } func hash(into hasher: inout Hasher) { hasher.combine("FeliCaRequestSpecificationVersionResponsePigeon") deepHashPigeon(value: statusFlag1, hasher: &hasher) deepHashPigeon(value: statusFlag2, hasher: &hasher) deepHashPigeon(value: basicVersion, hasher: &hasher) deepHashPigeon(value: optionVersion, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct FeliCaStatusFlagPigeon: Hashable { var statusFlag1: Int64 var statusFlag2: Int64 // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> FeliCaStatusFlagPigeon? { let statusFlag1 = pigeonVar_list[0] as! Int64 let statusFlag2 = pigeonVar_list[1] as! Int64 return FeliCaStatusFlagPigeon( statusFlag1: statusFlag1, statusFlag2: statusFlag2 ) } func toList() -> [Any?] { return [ statusFlag1, statusFlag2, ] } static func == (lhs: FeliCaStatusFlagPigeon, rhs: FeliCaStatusFlagPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.statusFlag1, rhs.statusFlag1) && deepEqualsPigeon(lhs.statusFlag2, rhs.statusFlag2) } func hash(into hasher: inout Hasher) { hasher.combine("FeliCaStatusFlagPigeon") deepHashPigeon(value: statusFlag1, hasher: &hasher) deepHashPigeon(value: statusFlag2, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct Iso7816ApduPigeon: Hashable { var instructionClass: Int64 var instructionCode: Int64 var p1Parameter: Int64 var p2Parameter: Int64 var data: FlutterStandardTypedData var expectedResponseLength: Int64 // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> Iso7816ApduPigeon? { let instructionClass = pigeonVar_list[0] as! Int64 let instructionCode = pigeonVar_list[1] as! Int64 let p1Parameter = pigeonVar_list[2] as! Int64 let p2Parameter = pigeonVar_list[3] as! Int64 let data = pigeonVar_list[4] as! FlutterStandardTypedData let expectedResponseLength = pigeonVar_list[5] as! Int64 return Iso7816ApduPigeon( instructionClass: instructionClass, instructionCode: instructionCode, p1Parameter: p1Parameter, p2Parameter: p2Parameter, data: data, expectedResponseLength: expectedResponseLength ) } func toList() -> [Any?] { return [ instructionClass, instructionCode, p1Parameter, p2Parameter, data, expectedResponseLength, ] } static func == (lhs: Iso7816ApduPigeon, rhs: Iso7816ApduPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.instructionClass, rhs.instructionClass) && deepEqualsPigeon(lhs.instructionCode, rhs.instructionCode) && deepEqualsPigeon(lhs.p1Parameter, rhs.p1Parameter) && deepEqualsPigeon(lhs.p2Parameter, rhs.p2Parameter) && deepEqualsPigeon(lhs.data, rhs.data) && deepEqualsPigeon(lhs.expectedResponseLength, rhs.expectedResponseLength) } func hash(into hasher: inout Hasher) { hasher.combine("Iso7816ApduPigeon") deepHashPigeon(value: instructionClass, hasher: &hasher) deepHashPigeon(value: instructionCode, hasher: &hasher) deepHashPigeon(value: p1Parameter, hasher: &hasher) deepHashPigeon(value: p2Parameter, hasher: &hasher) deepHashPigeon(value: data, hasher: &hasher) deepHashPigeon(value: expectedResponseLength, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct Iso7816ResponseApduPigeon: Hashable { var payload: FlutterStandardTypedData var statusWord1: Int64 var statusWord2: Int64 // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> Iso7816ResponseApduPigeon? { let payload = pigeonVar_list[0] as! FlutterStandardTypedData let statusWord1 = pigeonVar_list[1] as! Int64 let statusWord2 = pigeonVar_list[2] as! Int64 return Iso7816ResponseApduPigeon( payload: payload, statusWord1: statusWord1, statusWord2: statusWord2 ) } func toList() -> [Any?] { return [ payload, statusWord1, statusWord2, ] } static func == (lhs: Iso7816ResponseApduPigeon, rhs: Iso7816ResponseApduPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.payload, rhs.payload) && deepEqualsPigeon(lhs.statusWord1, rhs.statusWord1) && deepEqualsPigeon(lhs.statusWord2, rhs.statusWord2) } func hash(into hasher: inout Hasher) { hasher.combine("Iso7816ResponseApduPigeon") deepHashPigeon(value: payload, hasher: &hasher) deepHashPigeon(value: statusWord1, hasher: &hasher) deepHashPigeon(value: statusWord2, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct Iso15693SystemInfoPigeon: Hashable { var dataStorageFormatIdentifier: Int64 var applicationFamilyIdentifier: Int64 var blockSize: Int64 var totalBlocks: Int64 var icReference: Int64 // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> Iso15693SystemInfoPigeon? { let dataStorageFormatIdentifier = pigeonVar_list[0] as! Int64 let applicationFamilyIdentifier = pigeonVar_list[1] as! Int64 let blockSize = pigeonVar_list[2] as! Int64 let totalBlocks = pigeonVar_list[3] as! Int64 let icReference = pigeonVar_list[4] as! Int64 return Iso15693SystemInfoPigeon( dataStorageFormatIdentifier: dataStorageFormatIdentifier, applicationFamilyIdentifier: applicationFamilyIdentifier, blockSize: blockSize, totalBlocks: totalBlocks, icReference: icReference ) } func toList() -> [Any?] { return [ dataStorageFormatIdentifier, applicationFamilyIdentifier, blockSize, totalBlocks, icReference, ] } static func == (lhs: Iso15693SystemInfoPigeon, rhs: Iso15693SystemInfoPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.dataStorageFormatIdentifier, rhs.dataStorageFormatIdentifier) && deepEqualsPigeon(lhs.applicationFamilyIdentifier, rhs.applicationFamilyIdentifier) && deepEqualsPigeon(lhs.blockSize, rhs.blockSize) && deepEqualsPigeon(lhs.totalBlocks, rhs.totalBlocks) && deepEqualsPigeon(lhs.icReference, rhs.icReference) } func hash(into hasher: inout Hasher) { hasher.combine("Iso15693SystemInfoPigeon") deepHashPigeon(value: dataStorageFormatIdentifier, hasher: &hasher) deepHashPigeon(value: applicationFamilyIdentifier, hasher: &hasher) deepHashPigeon(value: blockSize, hasher: &hasher) deepHashPigeon(value: totalBlocks, hasher: &hasher) deepHashPigeon(value: icReference, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct NfcReaderSessionErrorPigeon: Hashable { var code: NfcReaderErrorCodePigeon var message: String // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> NfcReaderSessionErrorPigeon? { let code = pigeonVar_list[0] as! NfcReaderErrorCodePigeon let message = pigeonVar_list[1] as! String return NfcReaderSessionErrorPigeon( code: code, message: message ) } func toList() -> [Any?] { return [ code, message, ] } static func == (lhs: NfcReaderSessionErrorPigeon, rhs: NfcReaderSessionErrorPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.code, rhs.code) && deepEqualsPigeon(lhs.message, rhs.message) } func hash(into hasher: inout Hasher) { hasher.combine("NfcReaderSessionErrorPigeon") deepHashPigeon(value: code, hasher: &hasher) deepHashPigeon(value: message, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct NfcVasCommandConfigurationPigeon: Hashable { var mode: NfcVasCommandConfigurationModePigeon var passIdentifier: String var url: String? = nil // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> NfcVasCommandConfigurationPigeon? { let mode = pigeonVar_list[0] as! NfcVasCommandConfigurationModePigeon let passIdentifier = pigeonVar_list[1] as! String let url: String? = nilOrValue(pigeonVar_list[2]) return NfcVasCommandConfigurationPigeon( mode: mode, passIdentifier: passIdentifier, url: url ) } func toList() -> [Any?] { return [ mode, passIdentifier, url, ] } static func == (lhs: NfcVasCommandConfigurationPigeon, rhs: NfcVasCommandConfigurationPigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.mode, rhs.mode) && deepEqualsPigeon(lhs.passIdentifier, rhs.passIdentifier) && deepEqualsPigeon(lhs.url, rhs.url) } func hash(into hasher: inout Hasher) { hasher.combine("NfcVasCommandConfigurationPigeon") deepHashPigeon(value: mode, hasher: &hasher) deepHashPigeon(value: passIdentifier, hasher: &hasher) deepHashPigeon(value: url, hasher: &hasher) } } /// Generated class from Pigeon that represents data sent in messages. struct NfcVasResponsePigeon: Hashable { var status: NfcVasResponseErrorCodePigeon var vasData: FlutterStandardTypedData var mobileToken: FlutterStandardTypedData // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> NfcVasResponsePigeon? { let status = pigeonVar_list[0] as! NfcVasResponseErrorCodePigeon let vasData = pigeonVar_list[1] as! FlutterStandardTypedData let mobileToken = pigeonVar_list[2] as! FlutterStandardTypedData return NfcVasResponsePigeon( status: status, vasData: vasData, mobileToken: mobileToken ) } func toList() -> [Any?] { return [ status, vasData, mobileToken, ] } static func == (lhs: NfcVasResponsePigeon, rhs: NfcVasResponsePigeon) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsPigeon(lhs.status, rhs.status) && deepEqualsPigeon(lhs.vasData, rhs.vasData) && deepEqualsPigeon(lhs.mobileToken, rhs.mobileToken) } func hash(into hasher: inout Hasher) { hasher.combine("NfcVasResponsePigeon") deepHashPigeon(value: status, hasher: &hasher) deepHashPigeon(value: vasData, hasher: &hasher) deepHashPigeon(value: mobileToken, hasher: &hasher) } } private class PigeonPigeonCodecReader: FlutterStandardReader { override func readValue(ofType type: UInt8) -> Any? { switch type { case 129: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return PollingOptionPigeon(rawValue: enumResultAsInt) } return nil case 130: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return NdefStatusPigeon(rawValue: enumResultAsInt) } return nil case 131: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return TypeNameFormatPigeon(rawValue: enumResultAsInt) } return nil case 132: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return FeliCaPollingRequestCodePigeon(rawValue: enumResultAsInt) } return nil case 133: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return FeliCaPollingTimeSlotPigeon(rawValue: enumResultAsInt) } return nil case 134: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return MiFareFamilyPigeon(rawValue: enumResultAsInt) } return nil case 135: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return Iso15693RequestFlagPigeon(rawValue: enumResultAsInt) } return nil case 136: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return NfcVasCommandConfigurationModePigeon(rawValue: enumResultAsInt) } return nil case 137: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return NfcReaderErrorCodePigeon(rawValue: enumResultAsInt) } return nil case 138: let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) if let enumResultAsInt = enumResultAsInt { return NfcVasResponseErrorCodePigeon(rawValue: enumResultAsInt) } return nil case 139: return TagPigeon.fromList(self.readValue() as! [Any?]) case 140: return NdefPigeon.fromList(self.readValue() as! [Any?]) case 141: return FeliCaPigeon.fromList(self.readValue() as! [Any?]) case 142: return Iso15693Pigeon.fromList(self.readValue() as! [Any?]) case 143: return Iso7816Pigeon.fromList(self.readValue() as! [Any?]) case 144: return MiFarePigeon.fromList(self.readValue() as! [Any?]) case 145: return NdefQueryStatusPigeon.fromList(self.readValue() as! [Any?]) case 146: return NdefMessagePigeon.fromList(self.readValue() as! [Any?]) case 147: return NdefPayloadPigeon.fromList(self.readValue() as! [Any?]) case 148: return FeliCaPollingResponsePigeon.fromList(self.readValue() as! [Any?]) case 149: return FeliCaReadWithoutEncryptionResponsePigeon.fromList(self.readValue() as! [Any?]) case 150: return FeliCaRequestServiceV2ResponsePigeon.fromList(self.readValue() as! [Any?]) case 151: return FeliCaRequestSpecificationVersionResponsePigeon.fromList(self.readValue() as! [Any?]) case 152: return FeliCaStatusFlagPigeon.fromList(self.readValue() as! [Any?]) case 153: return Iso7816ApduPigeon.fromList(self.readValue() as! [Any?]) case 154: return Iso7816ResponseApduPigeon.fromList(self.readValue() as! [Any?]) case 155: return Iso15693SystemInfoPigeon.fromList(self.readValue() as! [Any?]) case 156: return NfcReaderSessionErrorPigeon.fromList(self.readValue() as! [Any?]) case 157: return NfcVasCommandConfigurationPigeon.fromList(self.readValue() as! [Any?]) case 158: return NfcVasResponsePigeon.fromList(self.readValue() as! [Any?]) default: return super.readValue(ofType: type) } } } private class PigeonPigeonCodecWriter: FlutterStandardWriter { override func writeValue(_ value: Any) { if let value = value as? PollingOptionPigeon { super.writeByte(129) super.writeValue(value.rawValue) } else if let value = value as? NdefStatusPigeon { super.writeByte(130) super.writeValue(value.rawValue) } else if let value = value as? TypeNameFormatPigeon { super.writeByte(131) super.writeValue(value.rawValue) } else if let value = value as? FeliCaPollingRequestCodePigeon { super.writeByte(132) super.writeValue(value.rawValue) } else if let value = value as? FeliCaPollingTimeSlotPigeon { super.writeByte(133) super.writeValue(value.rawValue) } else if let value = value as? MiFareFamilyPigeon { super.writeByte(134) super.writeValue(value.rawValue) } else if let value = value as? Iso15693RequestFlagPigeon { super.writeByte(135) super.writeValue(value.rawValue) } else if let value = value as? NfcVasCommandConfigurationModePigeon { super.writeByte(136) super.writeValue(value.rawValue) } else if let value = value as? NfcReaderErrorCodePigeon { super.writeByte(137) super.writeValue(value.rawValue) } else if let value = value as? NfcVasResponseErrorCodePigeon { super.writeByte(138) super.writeValue(value.rawValue) } else if let value = value as? TagPigeon { super.writeByte(139) super.writeValue(value.toList()) } else if let value = value as? NdefPigeon { super.writeByte(140) super.writeValue(value.toList()) } else if let value = value as? FeliCaPigeon { super.writeByte(141) super.writeValue(value.toList()) } else if let value = value as? Iso15693Pigeon { super.writeByte(142) super.writeValue(value.toList()) } else if let value = value as? Iso7816Pigeon { super.writeByte(143) super.writeValue(value.toList()) } else if let value = value as? MiFarePigeon { super.writeByte(144) super.writeValue(value.toList()) } else if let value = value as? NdefQueryStatusPigeon { super.writeByte(145) super.writeValue(value.toList()) } else if let value = value as? NdefMessagePigeon { super.writeByte(146) super.writeValue(value.toList()) } else if let value = value as? NdefPayloadPigeon { super.writeByte(147) super.writeValue(value.toList()) } else if let value = value as? FeliCaPollingResponsePigeon { super.writeByte(148) super.writeValue(value.toList()) } else if let value = value as? FeliCaReadWithoutEncryptionResponsePigeon { super.writeByte(149) super.writeValue(value.toList()) } else if let value = value as? FeliCaRequestServiceV2ResponsePigeon { super.writeByte(150) super.writeValue(value.toList()) } else if let value = value as? FeliCaRequestSpecificationVersionResponsePigeon { super.writeByte(151) super.writeValue(value.toList()) } else if let value = value as? FeliCaStatusFlagPigeon { super.writeByte(152) super.writeValue(value.toList()) } else if let value = value as? Iso7816ApduPigeon { super.writeByte(153) super.writeValue(value.toList()) } else if let value = value as? Iso7816ResponseApduPigeon { super.writeByte(154) super.writeValue(value.toList()) } else if let value = value as? Iso15693SystemInfoPigeon { super.writeByte(155) super.writeValue(value.toList()) } else if let value = value as? NfcReaderSessionErrorPigeon { super.writeByte(156) super.writeValue(value.toList()) } else if let value = value as? NfcVasCommandConfigurationPigeon { super.writeByte(157) super.writeValue(value.toList()) } else if let value = value as? NfcVasResponsePigeon { super.writeByte(158) super.writeValue(value.toList()) } else { super.writeValue(value) } } } private class PigeonPigeonCodecReaderWriter: FlutterStandardReaderWriter { override func reader(with data: Data) -> FlutterStandardReader { return PigeonPigeonCodecReader(data: data) } override func writer(with data: NSMutableData) -> FlutterStandardWriter { return PigeonPigeonCodecWriter(data: data) } } class PigeonPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { static let shared = PigeonPigeonCodec(readerWriter: PigeonPigeonCodecReaderWriter()) } /// Generated protocol from Pigeon that represents Flutter messages that can be called from Swift. protocol FlutterApiPigeonProtocol { func tagSessionDidBecomeActive(completion: @escaping (Result) -> Void) func tagSessionDidDetect(tag tagArg: TagPigeon, completion: @escaping (Result) -> Void) func tagSessionDidInvalidateWithError(error errorArg: NfcReaderSessionErrorPigeon, completion: @escaping (Result) -> Void) func vasSessionDidBecomeActive(completion: @escaping (Result) -> Void) func vasSessionDidReceive(responses responsesArg: [NfcVasResponsePigeon], completion: @escaping (Result) -> Void) func vasSessionDidInvalidateWithError(error errorArg: NfcReaderSessionErrorPigeon, completion: @escaping (Result) -> Void) } class FlutterApiPigeon: FlutterApiPigeonProtocol { private let binaryMessenger: FlutterBinaryMessenger private let messageChannelSuffix: String init(binaryMessenger: FlutterBinaryMessenger, messageChannelSuffix: String = "") { self.binaryMessenger = binaryMessenger self.messageChannelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" } var codec: PigeonPigeonCodec { return PigeonPigeonCodec.shared } func tagSessionDidBecomeActive(completion: @escaping (Result) -> Void) { let channelName: String = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.tagSessionDidBecomeActive\(messageChannelSuffix)" let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage(nil) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String let message: String? = nilOrValue(listResponse[1]) let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } } } func tagSessionDidDetect(tag tagArg: TagPigeon, completion: @escaping (Result) -> Void) { let channelName: String = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.tagSessionDidDetect\(messageChannelSuffix)" let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([tagArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String let message: String? = nilOrValue(listResponse[1]) let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } } } func tagSessionDidInvalidateWithError(error errorArg: NfcReaderSessionErrorPigeon, completion: @escaping (Result) -> Void) { let channelName: String = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.tagSessionDidInvalidateWithError\(messageChannelSuffix)" let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([errorArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String let message: String? = nilOrValue(listResponse[1]) let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } } } func vasSessionDidBecomeActive(completion: @escaping (Result) -> Void) { let channelName: String = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.vasSessionDidBecomeActive\(messageChannelSuffix)" let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage(nil) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String let message: String? = nilOrValue(listResponse[1]) let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } } } func vasSessionDidReceive(responses responsesArg: [NfcVasResponsePigeon], completion: @escaping (Result) -> Void) { let channelName: String = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.vasSessionDidReceive\(messageChannelSuffix)" let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([responsesArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String let message: String? = nilOrValue(listResponse[1]) let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } } } func vasSessionDidInvalidateWithError(error errorArg: NfcReaderSessionErrorPigeon, completion: @escaping (Result) -> Void) { let channelName: String = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.vasSessionDidInvalidateWithError\(messageChannelSuffix)" let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([errorArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String let message: String? = nilOrValue(listResponse[1]) let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } } } } /// Generated protocol from Pigeon that represents a handler of messages from Flutter. protocol HostApiPigeon { func tagSessionReadingAvailable() throws -> Bool func tagSessionBegin(pollingOptions: [PollingOptionPigeon], alertMessage: String?, invalidateAfterFirstRead: Bool) throws func tagSessionInvalidate(alertMessage: String?, errorMessage: String?) throws func tagSessionRestartPolling() throws func tagSessionSetAlertMessage(alertMessage: String) throws func vasSessionReadingAvailable() throws -> Bool func vasSessionBegin(configurations: [NfcVasCommandConfigurationPigeon], alertMessage: String?) throws func vasSessionInvalidate(alertMessage: String?, errorMessage: String?) throws func vasSessionSetAlertMessage(alertMessage: String) throws func ndefQueryNdefStatus(handle: String, completion: @escaping (Result) -> Void) func ndefReadNdef(handle: String, completion: @escaping (Result) -> Void) func ndefWriteNdef(handle: String, message: NdefMessagePigeon, completion: @escaping (Result) -> Void) func ndefWriteLock(handle: String, completion: @escaping (Result) -> Void) func feliCaPolling(handle: String, systemCode: FlutterStandardTypedData, requestCode: FeliCaPollingRequestCodePigeon, timeSlot: FeliCaPollingTimeSlotPigeon, completion: @escaping (Result) -> Void) func feliCaRequestService(handle: String, nodeCodeList: [FlutterStandardTypedData], completion: @escaping (Result<[FlutterStandardTypedData], Error>) -> Void) func feliCaRequestResponse(handle: String, completion: @escaping (Result) -> Void) func feliCaReadWithoutEncryption(handle: String, serviceCodeList: [FlutterStandardTypedData], blockList: [FlutterStandardTypedData], completion: @escaping (Result) -> Void) func feliCaWriteWithoutEncryption(handle: String, serviceCodeList: [FlutterStandardTypedData], blockList: [FlutterStandardTypedData], blockData: [FlutterStandardTypedData], completion: @escaping (Result) -> Void) func feliCaRequestSystemCode(handle: String, completion: @escaping (Result<[FlutterStandardTypedData], Error>) -> Void) func feliCaRequestServiceV2(handle: String, nodeCodeList: [FlutterStandardTypedData], completion: @escaping (Result) -> Void) func feliCaRequestSpecificationVersion(handle: String, completion: @escaping (Result) -> Void) func feliCaResetMode(handle: String, completion: @escaping (Result) -> Void) func feliCaSendFeliCaCommand(handle: String, commandPacket: FlutterStandardTypedData, completion: @escaping (Result) -> Void) func miFareSendMiFareCommand(handle: String, commandPacket: FlutterStandardTypedData, completion: @escaping (Result) -> Void) func miFareSendMiFareISO7816Command(handle: String, apdu: Iso7816ApduPigeon, completion: @escaping (Result) -> Void) func miFareSendMiFareISO7816CommandRaw(handle: String, data: FlutterStandardTypedData, completion: @escaping (Result) -> Void) func iso7816SendCommand(handle: String, apdu: Iso7816ApduPigeon, completion: @escaping (Result) -> Void) func iso7816SendCommandRaw(handle: String, data: FlutterStandardTypedData, completion: @escaping (Result) -> Void) func iso15693StayQuiet(handle: String, completion: @escaping (Result) -> Void) func iso15693ReadSingleBlock(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, completion: @escaping (Result) -> Void) func iso15693WriteSingleBlock(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, dataBlock: FlutterStandardTypedData, completion: @escaping (Result) -> Void) func iso15693LockBlock(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, completion: @escaping (Result) -> Void) func iso15693ReadMultipleBlocks(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, numberOfBlocks: Int64, completion: @escaping (Result<[FlutterStandardTypedData], Error>) -> Void) func iso15693WriteMultipleBlocks(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, numberOfBlocks: Int64, dataBlocks: [FlutterStandardTypedData], completion: @escaping (Result) -> Void) func iso15693Select(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) func iso15693ResetToReady(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) func iso15693WriteAfi(handle: String, requestFlags: [Iso15693RequestFlagPigeon], afi: Int64, completion: @escaping (Result) -> Void) func iso15693LockAfi(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) func iso15693WriteDsfId(handle: String, requestFlags: [Iso15693RequestFlagPigeon], dsfId: Int64, completion: @escaping (Result) -> Void) func iso15693LockDsfId(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) func iso15693GetSystemInfo(handle: String, requestFlags: [Iso15693RequestFlagPigeon], completion: @escaping (Result) -> Void) func iso15693GetMultipleBlockSecurityStatus(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: Int64, numberOfBlocks: Int64, completion: @escaping (Result<[Int64], Error>) -> Void) func iso15693CustomCommand(handle: String, requestFlags: [Iso15693RequestFlagPigeon], customCommandCode: Int64, customRequestParameters: FlutterStandardTypedData, completion: @escaping (Result) -> Void) } /// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. class HostApiPigeonSetup { static var codec: FlutterStandardMessageCodec { PigeonPigeonCodec.shared } /// Sets up an instance of `HostApiPigeon` to handle messages through the `binaryMessenger`. static func setUp(binaryMessenger: FlutterBinaryMessenger, api: HostApiPigeon?, messageChannelSuffix: String = "") { let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" let tagSessionReadingAvailableChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionReadingAvailable\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { tagSessionReadingAvailableChannel.setMessageHandler { _, reply in do { let result = try api.tagSessionReadingAvailable() reply(wrapResult(result)) } catch { reply(wrapError(error)) } } } else { tagSessionReadingAvailableChannel.setMessageHandler(nil) } let tagSessionBeginChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionBegin\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { tagSessionBeginChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pollingOptionsArg = args[0] as! [PollingOptionPigeon] let alertMessageArg: String? = nilOrValue(args[1]) let invalidateAfterFirstReadArg = args[2] as! Bool do { try api.tagSessionBegin(pollingOptions: pollingOptionsArg, alertMessage: alertMessageArg, invalidateAfterFirstRead: invalidateAfterFirstReadArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { tagSessionBeginChannel.setMessageHandler(nil) } let tagSessionInvalidateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionInvalidate\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { tagSessionInvalidateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let alertMessageArg: String? = nilOrValue(args[0]) let errorMessageArg: String? = nilOrValue(args[1]) do { try api.tagSessionInvalidate(alertMessage: alertMessageArg, errorMessage: errorMessageArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { tagSessionInvalidateChannel.setMessageHandler(nil) } let tagSessionRestartPollingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionRestartPolling\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { tagSessionRestartPollingChannel.setMessageHandler { _, reply in do { try api.tagSessionRestartPolling() reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { tagSessionRestartPollingChannel.setMessageHandler(nil) } let tagSessionSetAlertMessageChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionSetAlertMessage\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { tagSessionSetAlertMessageChannel.setMessageHandler { message, reply in let args = message as! [Any?] let alertMessageArg = args[0] as! String do { try api.tagSessionSetAlertMessage(alertMessage: alertMessageArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { tagSessionSetAlertMessageChannel.setMessageHandler(nil) } let vasSessionReadingAvailableChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.vasSessionReadingAvailable\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { vasSessionReadingAvailableChannel.setMessageHandler { _, reply in do { let result = try api.vasSessionReadingAvailable() reply(wrapResult(result)) } catch { reply(wrapError(error)) } } } else { vasSessionReadingAvailableChannel.setMessageHandler(nil) } let vasSessionBeginChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.vasSessionBegin\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { vasSessionBeginChannel.setMessageHandler { message, reply in let args = message as! [Any?] let configurationsArg = args[0] as! [NfcVasCommandConfigurationPigeon] let alertMessageArg: String? = nilOrValue(args[1]) do { try api.vasSessionBegin(configurations: configurationsArg, alertMessage: alertMessageArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { vasSessionBeginChannel.setMessageHandler(nil) } let vasSessionInvalidateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.vasSessionInvalidate\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { vasSessionInvalidateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let alertMessageArg: String? = nilOrValue(args[0]) let errorMessageArg: String? = nilOrValue(args[1]) do { try api.vasSessionInvalidate(alertMessage: alertMessageArg, errorMessage: errorMessageArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { vasSessionInvalidateChannel.setMessageHandler(nil) } let vasSessionSetAlertMessageChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.vasSessionSetAlertMessage\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { vasSessionSetAlertMessageChannel.setMessageHandler { message, reply in let args = message as! [Any?] let alertMessageArg = args[0] as! String do { try api.vasSessionSetAlertMessage(alertMessage: alertMessageArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { vasSessionSetAlertMessageChannel.setMessageHandler(nil) } let ndefQueryNdefStatusChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefQueryNdefStatus\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { ndefQueryNdefStatusChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String api.ndefQueryNdefStatus(handle: handleArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { ndefQueryNdefStatusChannel.setMessageHandler(nil) } let ndefReadNdefChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefReadNdef\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { ndefReadNdefChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String api.ndefReadNdef(handle: handleArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { ndefReadNdefChannel.setMessageHandler(nil) } let ndefWriteNdefChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefWriteNdef\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { ndefWriteNdefChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let messageArg = args[1] as! NdefMessagePigeon api.ndefWriteNdef(handle: handleArg, message: messageArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { ndefWriteNdefChannel.setMessageHandler(nil) } let ndefWriteLockChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefWriteLock\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { ndefWriteLockChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String api.ndefWriteLock(handle: handleArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { ndefWriteLockChannel.setMessageHandler(nil) } let feliCaPollingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaPolling\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaPollingChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let systemCodeArg = args[1] as! FlutterStandardTypedData let requestCodeArg = args[2] as! FeliCaPollingRequestCodePigeon let timeSlotArg = args[3] as! FeliCaPollingTimeSlotPigeon api.feliCaPolling(handle: handleArg, systemCode: systemCodeArg, requestCode: requestCodeArg, timeSlot: timeSlotArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaPollingChannel.setMessageHandler(nil) } let feliCaRequestServiceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestService\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaRequestServiceChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let nodeCodeListArg = args[1] as! [FlutterStandardTypedData] api.feliCaRequestService(handle: handleArg, nodeCodeList: nodeCodeListArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaRequestServiceChannel.setMessageHandler(nil) } let feliCaRequestResponseChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestResponse\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaRequestResponseChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String api.feliCaRequestResponse(handle: handleArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaRequestResponseChannel.setMessageHandler(nil) } let feliCaReadWithoutEncryptionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaReadWithoutEncryption\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaReadWithoutEncryptionChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let serviceCodeListArg = args[1] as! [FlutterStandardTypedData] let blockListArg = args[2] as! [FlutterStandardTypedData] api.feliCaReadWithoutEncryption(handle: handleArg, serviceCodeList: serviceCodeListArg, blockList: blockListArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaReadWithoutEncryptionChannel.setMessageHandler(nil) } let feliCaWriteWithoutEncryptionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaWriteWithoutEncryption\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaWriteWithoutEncryptionChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let serviceCodeListArg = args[1] as! [FlutterStandardTypedData] let blockListArg = args[2] as! [FlutterStandardTypedData] let blockDataArg = args[3] as! [FlutterStandardTypedData] api.feliCaWriteWithoutEncryption(handle: handleArg, serviceCodeList: serviceCodeListArg, blockList: blockListArg, blockData: blockDataArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaWriteWithoutEncryptionChannel.setMessageHandler(nil) } let feliCaRequestSystemCodeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestSystemCode\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaRequestSystemCodeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String api.feliCaRequestSystemCode(handle: handleArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaRequestSystemCodeChannel.setMessageHandler(nil) } let feliCaRequestServiceV2Channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestServiceV2\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaRequestServiceV2Channel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let nodeCodeListArg = args[1] as! [FlutterStandardTypedData] api.feliCaRequestServiceV2(handle: handleArg, nodeCodeList: nodeCodeListArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaRequestServiceV2Channel.setMessageHandler(nil) } let feliCaRequestSpecificationVersionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestSpecificationVersion\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaRequestSpecificationVersionChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String api.feliCaRequestSpecificationVersion(handle: handleArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaRequestSpecificationVersionChannel.setMessageHandler(nil) } let feliCaResetModeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaResetMode\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaResetModeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String api.feliCaResetMode(handle: handleArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaResetModeChannel.setMessageHandler(nil) } let feliCaSendFeliCaCommandChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaSendFeliCaCommand\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { feliCaSendFeliCaCommandChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let commandPacketArg = args[1] as! FlutterStandardTypedData api.feliCaSendFeliCaCommand(handle: handleArg, commandPacket: commandPacketArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { feliCaSendFeliCaCommandChannel.setMessageHandler(nil) } let miFareSendMiFareCommandChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.miFareSendMiFareCommand\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { miFareSendMiFareCommandChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let commandPacketArg = args[1] as! FlutterStandardTypedData api.miFareSendMiFareCommand(handle: handleArg, commandPacket: commandPacketArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { miFareSendMiFareCommandChannel.setMessageHandler(nil) } let miFareSendMiFareISO7816CommandChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.miFareSendMiFareISO7816Command\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { miFareSendMiFareISO7816CommandChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let apduArg = args[1] as! Iso7816ApduPigeon api.miFareSendMiFareISO7816Command(handle: handleArg, apdu: apduArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { miFareSendMiFareISO7816CommandChannel.setMessageHandler(nil) } let miFareSendMiFareISO7816CommandRawChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.miFareSendMiFareISO7816CommandRaw\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { miFareSendMiFareISO7816CommandRawChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let dataArg = args[1] as! FlutterStandardTypedData api.miFareSendMiFareISO7816CommandRaw(handle: handleArg, data: dataArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { miFareSendMiFareISO7816CommandRawChannel.setMessageHandler(nil) } let iso7816SendCommandChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso7816SendCommand\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso7816SendCommandChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let apduArg = args[1] as! Iso7816ApduPigeon api.iso7816SendCommand(handle: handleArg, apdu: apduArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { iso7816SendCommandChannel.setMessageHandler(nil) } let iso7816SendCommandRawChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso7816SendCommandRaw\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso7816SendCommandRawChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let dataArg = args[1] as! FlutterStandardTypedData api.iso7816SendCommandRaw(handle: handleArg, data: dataArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { iso7816SendCommandRawChannel.setMessageHandler(nil) } let iso15693StayQuietChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693StayQuiet\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693StayQuietChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String api.iso15693StayQuiet(handle: handleArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693StayQuietChannel.setMessageHandler(nil) } let iso15693ReadSingleBlockChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693ReadSingleBlock\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693ReadSingleBlockChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] let blockNumberArg = args[2] as! Int64 api.iso15693ReadSingleBlock(handle: handleArg, requestFlags: requestFlagsArg, blockNumber: blockNumberArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693ReadSingleBlockChannel.setMessageHandler(nil) } let iso15693WriteSingleBlockChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693WriteSingleBlock\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693WriteSingleBlockChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] let blockNumberArg = args[2] as! Int64 let dataBlockArg = args[3] as! FlutterStandardTypedData api.iso15693WriteSingleBlock(handle: handleArg, requestFlags: requestFlagsArg, blockNumber: blockNumberArg, dataBlock: dataBlockArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693WriteSingleBlockChannel.setMessageHandler(nil) } let iso15693LockBlockChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693LockBlock\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693LockBlockChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] let blockNumberArg = args[2] as! Int64 api.iso15693LockBlock(handle: handleArg, requestFlags: requestFlagsArg, blockNumber: blockNumberArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693LockBlockChannel.setMessageHandler(nil) } let iso15693ReadMultipleBlocksChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693ReadMultipleBlocks\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693ReadMultipleBlocksChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] let blockNumberArg = args[2] as! Int64 let numberOfBlocksArg = args[3] as! Int64 api.iso15693ReadMultipleBlocks(handle: handleArg, requestFlags: requestFlagsArg, blockNumber: blockNumberArg, numberOfBlocks: numberOfBlocksArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693ReadMultipleBlocksChannel.setMessageHandler(nil) } let iso15693WriteMultipleBlocksChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693WriteMultipleBlocks\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693WriteMultipleBlocksChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] let blockNumberArg = args[2] as! Int64 let numberOfBlocksArg = args[3] as! Int64 let dataBlocksArg = args[4] as! [FlutterStandardTypedData] api.iso15693WriteMultipleBlocks(handle: handleArg, requestFlags: requestFlagsArg, blockNumber: blockNumberArg, numberOfBlocks: numberOfBlocksArg, dataBlocks: dataBlocksArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693WriteMultipleBlocksChannel.setMessageHandler(nil) } let iso15693SelectChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693Select\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693SelectChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] api.iso15693Select(handle: handleArg, requestFlags: requestFlagsArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693SelectChannel.setMessageHandler(nil) } let iso15693ResetToReadyChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693ResetToReady\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693ResetToReadyChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] api.iso15693ResetToReady(handle: handleArg, requestFlags: requestFlagsArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693ResetToReadyChannel.setMessageHandler(nil) } let iso15693WriteAfiChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693WriteAfi\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693WriteAfiChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] let afiArg = args[2] as! Int64 api.iso15693WriteAfi(handle: handleArg, requestFlags: requestFlagsArg, afi: afiArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693WriteAfiChannel.setMessageHandler(nil) } let iso15693LockAfiChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693LockAfi\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693LockAfiChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] api.iso15693LockAfi(handle: handleArg, requestFlags: requestFlagsArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693LockAfiChannel.setMessageHandler(nil) } let iso15693WriteDsfIdChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693WriteDsfId\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693WriteDsfIdChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] let dsfIdArg = args[2] as! Int64 api.iso15693WriteDsfId(handle: handleArg, requestFlags: requestFlagsArg, dsfId: dsfIdArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693WriteDsfIdChannel.setMessageHandler(nil) } let iso15693LockDsfIdChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693LockDsfId\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693LockDsfIdChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] api.iso15693LockDsfId(handle: handleArg, requestFlags: requestFlagsArg) { result in switch result { case .success: reply(wrapResult(nil)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693LockDsfIdChannel.setMessageHandler(nil) } let iso15693GetSystemInfoChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693GetSystemInfo\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693GetSystemInfoChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] api.iso15693GetSystemInfo(handle: handleArg, requestFlags: requestFlagsArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693GetSystemInfoChannel.setMessageHandler(nil) } let iso15693GetMultipleBlockSecurityStatusChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693GetMultipleBlockSecurityStatus\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693GetMultipleBlockSecurityStatusChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] let blockNumberArg = args[2] as! Int64 let numberOfBlocksArg = args[3] as! Int64 api.iso15693GetMultipleBlockSecurityStatus(handle: handleArg, requestFlags: requestFlagsArg, blockNumber: blockNumberArg, numberOfBlocks: numberOfBlocksArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693GetMultipleBlockSecurityStatusChannel.setMessageHandler(nil) } let iso15693CustomCommandChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693CustomCommand\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { iso15693CustomCommandChannel.setMessageHandler { message, reply in let args = message as! [Any?] let handleArg = args[0] as! String let requestFlagsArg = args[1] as! [Iso15693RequestFlagPigeon] let customCommandCodeArg = args[2] as! Int64 let customRequestParametersArg = args[3] as! FlutterStandardTypedData api.iso15693CustomCommand(handle: handleArg, requestFlags: requestFlagsArg, customCommandCode: customCommandCodeArg, customRequestParameters: customRequestParametersArg) { result in switch result { case .success(let res): reply(wrapResult(res)) case .failure(let error): reply(wrapError(error)) } } } } else { iso15693CustomCommandChannel.setMessageHandler(nil) } } } ================================================ FILE: ios/nfc_manager.podspec ================================================ # # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. # Run `pod lib lint nfc_manager.podspec` to validate before publishing. # Pod::Spec.new do |s| s.name = 'nfc_manager' s.version = '0.0.1' s.summary = 'Flutter NFC Manager' s.description = <<-DESC A Flutter plugin providing access to NFC features on iOS. DESC s.homepage = 'https://github.com/okadan/flutter-nfc-manager' s.license = { :file => '../LICENSE' } s.author = { 'okadan' => '46291090+okadan@users.noreply.github.com' } s.source = { :path => '.' } s.source_files = 'nfc_manager/Sources/nfc_manager/**/*' s.dependency 'Flutter' s.platform = :ios, '13.0' # Flutter.framework does not contain a i386 slice. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } s.swift_version = '5.0' end ================================================ FILE: lib/ndef_record.dart ================================================ export 'package:ndef_record/ndef_record.dart'; ================================================ FILE: lib/nfc_manager.dart ================================================ export 'src/nfc_manager/nfc_manager.dart'; ================================================ FILE: lib/nfc_manager_android.dart ================================================ export 'src/nfc_manager_android/nfc_manager.dart'; export 'src/nfc_manager_android/tags/iso_dep.dart'; export 'src/nfc_manager_android/tags/mifare_classic.dart'; export 'src/nfc_manager_android/tags/mifare_ultralight.dart'; export 'src/nfc_manager_android/tags/ndef.dart'; export 'src/nfc_manager_android/tags/ndef_formatable.dart'; export 'src/nfc_manager_android/tags/nfc_a.dart'; export 'src/nfc_manager_android/tags/nfc_b.dart'; export 'src/nfc_manager_android/tags/nfc_barcode.dart'; export 'src/nfc_manager_android/tags/nfc_f.dart'; export 'src/nfc_manager_android/tags/nfc_v.dart'; export 'src/nfc_manager_android/tags/tag.dart'; ================================================ FILE: lib/nfc_manager_ios.dart ================================================ export 'src/nfc_manager_ios/nfc_manager.dart'; export 'src/nfc_manager_ios/tags/felica.dart'; export 'src/nfc_manager_ios/tags/iso15693.dart'; export 'src/nfc_manager_ios/tags/iso7816.dart'; export 'src/nfc_manager_ios/tags/mifare.dart'; export 'src/nfc_manager_ios/tags/ndef.dart'; ================================================ FILE: lib/src/nfc_manager/nfc_manager.dart ================================================ import 'package:flutter/foundation.dart'; import 'package:nfc_manager/src/nfc_manager_android/nfc_manager_platform.dart'; import 'package:nfc_manager/src/nfc_manager_ios/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_ios/nfc_manager_platform.dart'; /// Provides access to the NFC session. abstract class NfcManager { static NfcManager? _instance; /// The default instance of [NfcManager] to use. static NfcManager get instance { return _instance ??= switch (defaultTargetPlatform) { TargetPlatform.android => NfcManagerAndroidPlatform(), TargetPlatform.iOS => NfcManagerIosPlatform(), _ => throw UnsupportedError( '${defaultTargetPlatform.name} is not supported', ), }; } /// Whether the NFC session is available. @Deprecated('Use `checkAvailability` instead') Future isAvailable(); /// Checks the availability of NFC on the current device. Future checkAvailability(); /// Starts the NFC session and register callbacks. /// /// [pollingOptions] is used to specify which tag types to discover. /// /// [onDiscovered] is called when the session discovers the tag. /// /// (iOS only) [alertMessageIos] is used to display the message on the popup. /// /// (iOS only) [invalidateAfterFirstReadIos] is used to specify whether the session should be invalidated after the /// first tag discovery. Default is true. /// /// (iOS only) [onSessionErrorIos] is called when the session is invalidated for some reason after the session has started. /// /// (Android only) [noPlatformSoundsAndroid] is used to disable platform sounds at the tag discovery. Default is false. Future startSession({ required Set pollingOptions, required void Function(NfcTag tag) onDiscovered, String? alertMessageIos, bool invalidateAfterFirstReadIos = true, void Function(NfcReaderSessionErrorIos)? onSessionErrorIos, bool noPlatformSoundsAndroid = false, }); /// Stops the NFC session and unregister callbacks. /// /// (iOS only) [alertMessageIos] and [errorMessageIos] are used to display success or error message on the popup. /// If both are used, [errorMessageIos] is used. Future stopSession({String? alertMessageIos, String? errorMessageIos}); } /// Represents the tag discovered by the NFC session. /// /// When the session discovers a tag, [onDiscovered] callback is called with an instance of this class. Use this /// generic instance to instantiate a specific tag class and perform tag-specific operations. final class NfcTag { /// Constructs an instance of this class for given data for testing. /// /// The instances constructed by this way are not valid in the production environment. Only instances obtained /// from the `onDiscovered` callback are valid. @visibleForTesting const NfcTag({required this.data}); /// The raw data obtained from the native platform. /// /// You don't need to use this property directly. Instead, access it by instantiating a specific-tag classes. @protected final Object data; } /// Represents the availability of NFC on the current device. enum NfcAvailability { /// NFC is suppported and currently enabled. enabled, /// NFC is supported but currently disabled. disabled, /// NFC is not supported. unsupported, } /// Represents the tag types which the NFC session will discover. enum NfcPollingOption { /// The session will discover ISO 14443 tags. iso14443, /// The session will discover ISO 15693 tags. iso15693, /// The session will discover ISO 18092 tags. iso18092, } ================================================ FILE: lib/src/nfc_manager_android/nfc_manager.dart ================================================ import 'dart:async'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; /// Provides access to the NFC session for Android. final class NfcManagerAndroid { NfcManagerAndroid._() { _FlutterApiAndroid(this); } /// The default instance of [NfcManagerAndroid] to use. static NfcManagerAndroid get instance => _instance ??= NfcManagerAndroid._(); static NfcManagerAndroid? _instance; // DOC: Stream get onStateChanged => _onStateChanged.stream; final _onStateChanged = StreamController.broadcast(); void Function(NfcTag)? _onTagDiscovered; // DOC: Future isEnabled() { return hostApi.nfcAdapterIsEnabled(); } // DOC: Future isSecureNfcEnabled() { return hostApi.nfcAdapterIsSecureNfcEnabled(); } // DOC: Future isSecureNfcSupported() { return hostApi.nfcAdapterIsSecureNfcSupported(); } // DOC: Future enableReaderMode({ required Set flags, required void Function(NfcTag) onTagDiscovered, }) { _onTagDiscovered = onTagDiscovered; return hostApi.nfcAdapterEnableReaderMode( flags: flags.map((e) => ReaderFlagPigeon.values.byName(e.name)).toList(), ); } // DOC: Future disableReaderMode() { _onTagDiscovered = null; return hostApi.nfcAdapterDisableReaderMode(); } } final class _FlutterApiAndroid implements FlutterApiPigeon { _FlutterApiAndroid(this._instance) { FlutterApiPigeon.setUp(this); } final NfcManagerAndroid _instance; @override void onAdapterStateChanged(AdapterStatePigeon state) { _instance._onStateChanged.sink.add( NfcAdapterStateAndroid.values.byName(state.name), ); } @override void onTagDiscovered(TagPigeon tag) { // ignore: invalid_use_of_visible_for_testing_member _instance._onTagDiscovered?.call(NfcTag(data: tag)); } } // DOC: enum NfcReaderFlagAndroid { // DOC: nfcA, // DOC: nfcB, // DOC: nfcBarcode, // DOC: nfcF, // DOC: nfcV, // DOC: noPlatformSounds, // DOC: skipNdefCheck, } // DOC: enum NfcAdapterStateAndroid { // DOC: off, // DOC: turningOn, // DOC: on, // DOC: turningOff, } ================================================ FILE: lib/src/nfc_manager_android/nfc_manager_platform.dart ================================================ import 'package:flutter/services.dart'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_ios/nfc_manager.dart'; final class NfcManagerAndroidPlatform implements NfcManager { @override Future isAvailable() { return NfcManagerAndroid.instance.isEnabled(); } @override Future checkAvailability() async { try { final isAvailable = await NfcManagerAndroid.instance.isEnabled(); return isAvailable ? NfcAvailability.enabled : NfcAvailability.disabled; } on PlatformException { return NfcAvailability.unsupported; } } @override Future startSession({ required Set pollingOptions, required void Function(NfcTag tag) onDiscovered, String? alertMessageIos, bool invalidateAfterFirstReadIos = true, void Function(NfcReaderSessionErrorIos)? onSessionErrorIos, bool noPlatformSoundsAndroid = false, }) { return NfcManagerAndroid.instance.enableReaderMode( flags: { if (pollingOptions.contains(NfcPollingOption.iso14443)) ...{ NfcReaderFlagAndroid.nfcA, NfcReaderFlagAndroid.nfcB, }, if (pollingOptions.contains(NfcPollingOption.iso15693)) ...{ NfcReaderFlagAndroid.nfcV, }, if (pollingOptions.contains(NfcPollingOption.iso18092)) ...{ NfcReaderFlagAndroid.nfcF, }, if (noPlatformSoundsAndroid) ...{NfcReaderFlagAndroid.noPlatformSounds}, }, onTagDiscovered: onDiscovered, ); } @override Future stopSession({String? alertMessageIos, String? errorMessageIos}) { return NfcManagerAndroid.instance.disableReaderMode(); } } ================================================ FILE: lib/src/nfc_manager_android/pigeon.dart ================================================ import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; final hostApi = HostApiPigeon(); ================================================ FILE: lib/src/nfc_manager_android/pigeon.g.dart ================================================ // Autogenerated from Pigeon (v26.3.3), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: unused_import, unused_shown_name // ignore_for_file: type=lint import 'dart:async'; import 'dart:typed_data' show Float64List, Int32List, Int64List; import 'package:flutter/services.dart'; import 'package:meta/meta.dart' show immutable, protected, visibleForTesting; Object? _extractReplyValueOrThrow( List? replyList, String channelName, { required bool isNullValid, }) { if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel: "$channelName".', ); } else if (replyList.length > 1) { throw PlatformException( code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); } else if (!isNullValid && (replyList.isNotEmpty && replyList[0] == null)) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } return replyList.firstOrNull; } List wrapResponse({ Object? result, PlatformException? error, bool empty = false, }) { if (empty) { return []; } if (error == null) { return [result]; } return [error.code, error.message, error.details]; } bool _deepEquals(Object? a, Object? b) { if (identical(a, b)) { return true; } if (a is double && b is double) { if (a.isNaN && b.isNaN) { return true; } return a == b; } if (a is List && b is List) { return a.length == b.length && a.indexed.every( ((int, dynamic) item) => _deepEquals(item.$2, b[item.$1]), ); } if (a is Map && b is Map) { if (a.length != b.length) { return false; } for (final MapEntry entryA in a.entries) { bool found = false; for (final MapEntry entryB in b.entries) { if (_deepEquals(entryA.key, entryB.key)) { if (_deepEquals(entryA.value, entryB.value)) { found = true; break; } else { return false; } } } if (!found) { return false; } } return true; } return a == b; } int _deepHash(Object? value) { if (value is List) { return Object.hashAll(value.map(_deepHash)); } if (value is Map) { int result = 0; for (final MapEntry entry in value.entries) { result += (_deepHash(entry.key) * 31) ^ _deepHash(entry.value); } return result; } if (value is double && value.isNaN) { // Normalize NaN to a consistent hash. return 0x7FF8000000000000.hashCode; } if (value is double && value == 0.0) { // Normalize -0.0 to 0.0 so they have the same hash code. return 0.0.hashCode; } return value.hashCode; } enum ReaderFlagPigeon { nfcA, nfcB, nfcBarcode, nfcF, nfcV, noPlatformSounds, skipNdefCheck, } enum AdapterStatePigeon { off, turningOn, on, turningOff } enum TypeNameFormatPigeon { empty, wellKnown, media, absoluteUri, external, unknown, unchanged, } enum NfcBarcodeTypePigeon { kovio, unknown } enum MifareClassicTypePigeon { classic, plus, pro, unknown } enum MifareUltralightTypePigeon { ultralight, ultralightC, unknown } class TagPigeon { TagPigeon({ required this.handle, required this.id, required this.techList, this.ndef, this.nfcA, this.nfcB, this.nfcF, this.nfcV, this.isoDep, this.mifareClassic, this.mifareUltralight, this.ndefFormatable, this.nfcBarcode, }); String handle; Uint8List id; List techList; NdefPigeon? ndef; NfcAPigeon? nfcA; NfcBPigeon? nfcB; NfcFPigeon? nfcF; NfcVPigeon? nfcV; IsoDepPigeon? isoDep; MifareClassicPigeon? mifareClassic; MifareUltralightPigeon? mifareUltralight; String? ndefFormatable; NfcBarcodePigeon? nfcBarcode; List _toList() { return [ handle, id, techList, ndef, nfcA, nfcB, nfcF, nfcV, isoDep, mifareClassic, mifareUltralight, ndefFormatable, nfcBarcode, ]; } Object encode() { return _toList(); } static TagPigeon decode(Object result) { result as List; return TagPigeon( handle: result[0]! as String, id: result[1]! as Uint8List, techList: (result[2]! as List).cast(), ndef: result[3] as NdefPigeon?, nfcA: result[4] as NfcAPigeon?, nfcB: result[5] as NfcBPigeon?, nfcF: result[6] as NfcFPigeon?, nfcV: result[7] as NfcVPigeon?, isoDep: result[8] as IsoDepPigeon?, mifareClassic: result[9] as MifareClassicPigeon?, mifareUltralight: result[10] as MifareUltralightPigeon?, ndefFormatable: result[11] as String?, nfcBarcode: result[12] as NfcBarcodePigeon?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! TagPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(handle, other.handle) && _deepEquals(id, other.id) && _deepEquals(techList, other.techList) && _deepEquals(ndef, other.ndef) && _deepEquals(nfcA, other.nfcA) && _deepEquals(nfcB, other.nfcB) && _deepEquals(nfcF, other.nfcF) && _deepEquals(nfcV, other.nfcV) && _deepEquals(isoDep, other.isoDep) && _deepEquals(mifareClassic, other.mifareClassic) && _deepEquals(mifareUltralight, other.mifareUltralight) && _deepEquals(ndefFormatable, other.ndefFormatable) && _deepEquals(nfcBarcode, other.nfcBarcode); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NdefPigeon { NdefPigeon({ required this.type, required this.canMakeReadOnly, required this.isWritable, required this.maxSize, this.cachedNdefMessage, }); String type; bool canMakeReadOnly; bool isWritable; int maxSize; NdefMessagePigeon? cachedNdefMessage; List _toList() { return [ type, canMakeReadOnly, isWritable, maxSize, cachedNdefMessage, ]; } Object encode() { return _toList(); } static NdefPigeon decode(Object result) { result as List; return NdefPigeon( type: result[0]! as String, canMakeReadOnly: result[1]! as bool, isWritable: result[2]! as bool, maxSize: result[3]! as int, cachedNdefMessage: result[4] as NdefMessagePigeon?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NdefPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(type, other.type) && _deepEquals(canMakeReadOnly, other.canMakeReadOnly) && _deepEquals(isWritable, other.isWritable) && _deepEquals(maxSize, other.maxSize) && _deepEquals(cachedNdefMessage, other.cachedNdefMessage); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NfcAPigeon { NfcAPigeon({required this.atqa, required this.sak}); Uint8List atqa; int sak; List _toList() { return [atqa, sak]; } Object encode() { return _toList(); } static NfcAPigeon decode(Object result) { result as List; return NfcAPigeon(atqa: result[0]! as Uint8List, sak: result[1]! as int); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NfcAPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(atqa, other.atqa) && _deepEquals(sak, other.sak); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NfcBPigeon { NfcBPigeon({required this.applicationData, required this.protocolInfo}); Uint8List applicationData; Uint8List protocolInfo; List _toList() { return [applicationData, protocolInfo]; } Object encode() { return _toList(); } static NfcBPigeon decode(Object result) { result as List; return NfcBPigeon( applicationData: result[0]! as Uint8List, protocolInfo: result[1]! as Uint8List, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NfcBPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(applicationData, other.applicationData) && _deepEquals(protocolInfo, other.protocolInfo); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NfcFPigeon { NfcFPigeon({required this.manufacturer, required this.systemCode}); Uint8List manufacturer; Uint8List systemCode; List _toList() { return [manufacturer, systemCode]; } Object encode() { return _toList(); } static NfcFPigeon decode(Object result) { result as List; return NfcFPigeon( manufacturer: result[0]! as Uint8List, systemCode: result[1]! as Uint8List, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NfcFPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(manufacturer, other.manufacturer) && _deepEquals(systemCode, other.systemCode); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NfcVPigeon { NfcVPigeon({required this.dsfId, required this.responseFlags}); int dsfId; int responseFlags; List _toList() { return [dsfId, responseFlags]; } Object encode() { return _toList(); } static NfcVPigeon decode(Object result) { result as List; return NfcVPigeon( dsfId: result[0]! as int, responseFlags: result[1]! as int, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NfcVPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(dsfId, other.dsfId) && _deepEquals(responseFlags, other.responseFlags); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class IsoDepPigeon { IsoDepPigeon({ this.hiLayerResponse, this.historicalBytes, required this.isExtendedLengthApduSupported, }); Uint8List? hiLayerResponse; Uint8List? historicalBytes; bool isExtendedLengthApduSupported; List _toList() { return [ hiLayerResponse, historicalBytes, isExtendedLengthApduSupported, ]; } Object encode() { return _toList(); } static IsoDepPigeon decode(Object result) { result as List; return IsoDepPigeon( hiLayerResponse: result[0] as Uint8List?, historicalBytes: result[1] as Uint8List?, isExtendedLengthApduSupported: result[2]! as bool, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! IsoDepPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(hiLayerResponse, other.hiLayerResponse) && _deepEquals(historicalBytes, other.historicalBytes) && _deepEquals( isExtendedLengthApduSupported, other.isExtendedLengthApduSupported, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class MifareClassicPigeon { MifareClassicPigeon({ required this.type, required this.blockCount, required this.sectorCount, required this.size, }); MifareClassicTypePigeon type; int blockCount; int sectorCount; int size; List _toList() { return [type, blockCount, sectorCount, size]; } Object encode() { return _toList(); } static MifareClassicPigeon decode(Object result) { result as List; return MifareClassicPigeon( type: result[0]! as MifareClassicTypePigeon, blockCount: result[1]! as int, sectorCount: result[2]! as int, size: result[3]! as int, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! MifareClassicPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(type, other.type) && _deepEquals(blockCount, other.blockCount) && _deepEquals(sectorCount, other.sectorCount) && _deepEquals(size, other.size); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class MifareUltralightPigeon { MifareUltralightPigeon({required this.type}); MifareUltralightTypePigeon type; List _toList() { return [type]; } Object encode() { return _toList(); } static MifareUltralightPigeon decode(Object result) { result as List; return MifareUltralightPigeon( type: result[0]! as MifareUltralightTypePigeon, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! MifareUltralightPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(type, other.type); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NfcBarcodePigeon { NfcBarcodePigeon({required this.type, required this.barcode}); NfcBarcodeTypePigeon type; Uint8List barcode; List _toList() { return [type, barcode]; } Object encode() { return _toList(); } static NfcBarcodePigeon decode(Object result) { result as List; return NfcBarcodePigeon( type: result[0]! as NfcBarcodeTypePigeon, barcode: result[1]! as Uint8List, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NfcBarcodePigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(type, other.type) && _deepEquals(barcode, other.barcode); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NdefMessagePigeon { NdefMessagePigeon({required this.records}); List records; List _toList() { return [records]; } Object encode() { return _toList(); } static NdefMessagePigeon decode(Object result) { result as List; return NdefMessagePigeon( records: (result[0]! as List).cast(), ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NdefMessagePigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(records, other.records); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NdefRecordPigeon { NdefRecordPigeon({ required this.tnf, required this.type, required this.id, required this.payload, }); TypeNameFormatPigeon tnf; Uint8List type; Uint8List id; Uint8List payload; List _toList() { return [tnf, type, id, payload]; } Object encode() { return _toList(); } static NdefRecordPigeon decode(Object result) { result as List; return NdefRecordPigeon( tnf: result[0]! as TypeNameFormatPigeon, type: result[1]! as Uint8List, id: result[2]! as Uint8List, payload: result[3]! as Uint8List, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NdefRecordPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(tnf, other.tnf) && _deepEquals(type, other.type) && _deepEquals(id, other.id) && _deepEquals(payload, other.payload); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); } else if (value is ReaderFlagPigeon) { buffer.putUint8(129); writeValue(buffer, value.index); } else if (value is AdapterStatePigeon) { buffer.putUint8(130); writeValue(buffer, value.index); } else if (value is TypeNameFormatPigeon) { buffer.putUint8(131); writeValue(buffer, value.index); } else if (value is NfcBarcodeTypePigeon) { buffer.putUint8(132); writeValue(buffer, value.index); } else if (value is MifareClassicTypePigeon) { buffer.putUint8(133); writeValue(buffer, value.index); } else if (value is MifareUltralightTypePigeon) { buffer.putUint8(134); writeValue(buffer, value.index); } else if (value is TagPigeon) { buffer.putUint8(135); writeValue(buffer, value.encode()); } else if (value is NdefPigeon) { buffer.putUint8(136); writeValue(buffer, value.encode()); } else if (value is NfcAPigeon) { buffer.putUint8(137); writeValue(buffer, value.encode()); } else if (value is NfcBPigeon) { buffer.putUint8(138); writeValue(buffer, value.encode()); } else if (value is NfcFPigeon) { buffer.putUint8(139); writeValue(buffer, value.encode()); } else if (value is NfcVPigeon) { buffer.putUint8(140); writeValue(buffer, value.encode()); } else if (value is IsoDepPigeon) { buffer.putUint8(141); writeValue(buffer, value.encode()); } else if (value is MifareClassicPigeon) { buffer.putUint8(142); writeValue(buffer, value.encode()); } else if (value is MifareUltralightPigeon) { buffer.putUint8(143); writeValue(buffer, value.encode()); } else if (value is NfcBarcodePigeon) { buffer.putUint8(144); writeValue(buffer, value.encode()); } else if (value is NdefMessagePigeon) { buffer.putUint8(145); writeValue(buffer, value.encode()); } else if (value is NdefRecordPigeon) { buffer.putUint8(146); writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } } @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 129: final value = readValue(buffer) as int?; return value == null ? null : ReaderFlagPigeon.values[value]; case 130: final value = readValue(buffer) as int?; return value == null ? null : AdapterStatePigeon.values[value]; case 131: final value = readValue(buffer) as int?; return value == null ? null : TypeNameFormatPigeon.values[value]; case 132: final value = readValue(buffer) as int?; return value == null ? null : NfcBarcodeTypePigeon.values[value]; case 133: final value = readValue(buffer) as int?; return value == null ? null : MifareClassicTypePigeon.values[value]; case 134: final value = readValue(buffer) as int?; return value == null ? null : MifareUltralightTypePigeon.values[value]; case 135: return TagPigeon.decode(readValue(buffer)!); case 136: return NdefPigeon.decode(readValue(buffer)!); case 137: return NfcAPigeon.decode(readValue(buffer)!); case 138: return NfcBPigeon.decode(readValue(buffer)!); case 139: return NfcFPigeon.decode(readValue(buffer)!); case 140: return NfcVPigeon.decode(readValue(buffer)!); case 141: return IsoDepPigeon.decode(readValue(buffer)!); case 142: return MifareClassicPigeon.decode(readValue(buffer)!); case 143: return MifareUltralightPigeon.decode(readValue(buffer)!); case 144: return NfcBarcodePigeon.decode(readValue(buffer)!); case 145: return NdefMessagePigeon.decode(readValue(buffer)!); case 146: return NdefRecordPigeon.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); } } } abstract class FlutterApiPigeon { static const MessageCodec pigeonChannelCodec = _PigeonCodec(); void onTagDiscovered(TagPigeon tag); void onAdapterStateChanged(AdapterStatePigeon state); static void setUp( FlutterApiPigeon? api, { BinaryMessenger? binaryMessenger, String messageChannelSuffix = '', }) { messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.onTagDiscovered$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger, ); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { final List args = message! as List; final TagPigeon arg_tag = args[0]! as TagPigeon; try { api.onTagDiscovered(arg_tag); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse( error: PlatformException(code: 'error', message: e.toString()), ); } }); } } { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.onAdapterStateChanged$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger, ); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { final List args = message! as List; final AdapterStatePigeon arg_state = args[0]! as AdapterStatePigeon; try { api.onAdapterStateChanged(arg_state); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse( error: PlatformException(code: 'error', message: e.toString()), ); } }); } } } } class HostApiPigeon { /// Constructor for [HostApiPigeon]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. HostApiPigeon({ BinaryMessenger? binaryMessenger, String messageChannelSuffix = '', }) : pigeonVar_binaryMessenger = binaryMessenger, pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; Future nfcAdapterIsEnabled() async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterIsEnabled$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as bool; } Future nfcAdapterIsSecureNfcEnabled() async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterIsSecureNfcEnabled$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as bool; } Future nfcAdapterIsSecureNfcSupported() async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterIsSecureNfcSupported$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as bool; } Future nfcAdapterEnableReaderMode({ required List flags, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterEnableReaderMode$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [flags], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future nfcAdapterDisableReaderMode() async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterDisableReaderMode$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future ndefGetNdefMessage({ required String handle, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefGetNdefMessage$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); return pigeonVar_replyValue as NdefMessagePigeon?; } Future ndefWriteNdefMessage({ required String handle, required NdefMessagePigeon message, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefWriteNdefMessage$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, message], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future ndefMakeReadOnly({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefMakeReadOnly$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as bool; } Future nfcAGetMaxTransceiveLength({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAGetMaxTransceiveLength$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future nfcAGetTimeout({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAGetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future nfcASetTimeout({ required String handle, required int timeout, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcASetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, timeout], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future nfcATransceive({ required String handle, required Uint8List bytes, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcATransceive$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, bytes], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future nfcBGetMaxTransceiveLength({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcBGetMaxTransceiveLength$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future nfcBTransceive({ required String handle, required Uint8List bytes, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcBTransceive$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, bytes], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future nfcFGetMaxTransceiveLength({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFGetMaxTransceiveLength$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future nfcFGetTimeout({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFGetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future nfcFSetTimeout({ required String handle, required int timeout, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFSetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, timeout], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future nfcFTransceive({ required String handle, required Uint8List bytes, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFTransceive$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, bytes], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future nfcVGetMaxTransceiveLength({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcVGetMaxTransceiveLength$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future nfcVTransceive({ required String handle, required Uint8List bytes, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcVTransceive$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, bytes], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future isoDepGetMaxTransceiveLength({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepGetMaxTransceiveLength$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future isoDepGetTimeout({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepGetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future isoDepSetTimeout({ required String handle, required int timeout, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepSetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, timeout], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future isoDepTransceive({ required String handle, required Uint8List bytes, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepTransceive$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, bytes], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future mifareClassicGetMaxTransceiveLength({ required String handle, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicGetMaxTransceiveLength$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future mifareClassicGetTimeout({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicGetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future mifareClassicSetTimeout({ required String handle, required int timeout, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicSetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, timeout], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future mifareClassicBlockToSector({ required String handle, required int blockIndex, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicBlockToSector$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, blockIndex], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future mifareClassicGetBlockCountInSector({ required String handle, required int sectorIndex, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicGetBlockCountInSector$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, sectorIndex], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future mifareClassicSectorToBlock({ required String handle, required int sectorIndex, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicSectorToBlock$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, sectorIndex], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future mifareClassicAuthenticateSectorWithKeyA({ required String handle, required int sectorIndex, required Uint8List key, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicAuthenticateSectorWithKeyA$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, sectorIndex, key], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as bool; } Future mifareClassicAuthenticateSectorWithKeyB({ required String handle, required int sectorIndex, required Uint8List key, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicAuthenticateSectorWithKeyB$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, sectorIndex, key], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as bool; } Future mifareClassicIncrement({ required String handle, required int blockIndex, required int value, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicIncrement$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, blockIndex, value], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future mifareClassicDecrement({ required String handle, required int blockIndex, required int value, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicDecrement$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, blockIndex, value], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future mifareClassicReadBlock({ required String handle, required int blockIndex, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicReadBlock$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, blockIndex], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future mifareClassicWriteBlock({ required String handle, required int blockIndex, required Uint8List data, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicWriteBlock$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, blockIndex, data], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future mifareClassicRestore({ required String handle, required int blockIndex, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicRestore$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, blockIndex], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future mifareClassicTransfer({ required String handle, required int blockIndex, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicTransfer$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, blockIndex], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future mifareClassicTransceive({ required String handle, required Uint8List bytes, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicTransceive$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, bytes], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future mifareUltralightGetMaxTransceiveLength({ required String handle, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightGetMaxTransceiveLength$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future mifareUltralightGetTimeout({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightGetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future mifareUltralightSetTimeout({ required String handle, required int timeout, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightSetTimeout$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, timeout], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future mifareUltralightReadPages({ required String handle, required int pageOffset, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightReadPages$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, pageOffset], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future mifareUltralightWritePage({ required String handle, required int pageOffset, required Uint8List data, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightWritePage$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, pageOffset, data], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future mifareUltralightTransceive({ required String handle, required Uint8List bytes, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightTransceive$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, bytes], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future ndefFormatableFormat({ required String handle, required NdefMessagePigeon firstMessage, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefFormatableFormat$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, firstMessage], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future ndefFormatableFormatReadOnly({ required String handle, required NdefMessagePigeon firstMessage, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefFormatableFormatReadOnly$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, firstMessage], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } } ================================================ FILE: lib/src/nfc_manager_android/tags/iso_dep.dart ================================================ import 'dart:typed_data'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to ISO-DEP (ISO 14443-4) operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class IsoDepAndroid { const IsoDepAndroid._( this._handle, { required this.tag, required this.hiLayerResponse, required this.historicalBytes, required this.isExtendedLengthApduSupported, }); final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; // DOC: final Uint8List? hiLayerResponse; // DOC: final Uint8List? historicalBytes; // DOC: final bool isExtendedLengthApduSupported; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static IsoDepAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.isoDep; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return IsoDepAndroid._( data.handle, tag: atag, hiLayerResponse: tech.hiLayerResponse, historicalBytes: tech.historicalBytes, isExtendedLengthApduSupported: tech.isExtendedLengthApduSupported, ); } // DOC: Future getMaxTransceiveLength() { return hostApi.isoDepGetMaxTransceiveLength(handle: _handle); } // DOC: Future getTimeout() { return hostApi.isoDepGetTimeout(handle: _handle); } // DOC: Future setTimeout(int timeout) { return hostApi.isoDepSetTimeout(handle: _handle, timeout: timeout); } // DOC: Future transceive(Uint8List bytes) { return hostApi.isoDepTransceive(handle: _handle, bytes: bytes); } } ================================================ FILE: lib/src/nfc_manager_android/tags/mifare_classic.dart ================================================ import 'dart:typed_data'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to MIFARE Classic operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class MifareClassicAndroid { const MifareClassicAndroid._( this._handle, { required this.tag, required this.type, required this.blockCount, required this.sectorCount, required this.size, }); final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; // DOC: final MifareClassicTypeAndroid type; // DOC: final int blockCount; // DOC: final int sectorCount; // DOC: final int size; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static MifareClassicAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.mifareClassic; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return MifareClassicAndroid._( data.handle, tag: atag, type: MifareClassicTypeAndroid.values.byName(tech.type.name), blockCount: tech.blockCount, sectorCount: tech.sectorCount, size: tech.size, ); } // DOC: Future authenticateSectorWithKeyA({ required int sectorIndex, required Uint8List key, }) { return hostApi.mifareClassicAuthenticateSectorWithKeyA( handle: _handle, sectorIndex: sectorIndex, key: key, ); } // DOC: Future authenticateSectorWithKeyB({ required int sectorIndex, required Uint8List key, }) { return hostApi.mifareClassicAuthenticateSectorWithKeyB( handle: _handle, sectorIndex: sectorIndex, key: key, ); } // DOC: Future increment({required int blockIndex, required int value}) { return hostApi.mifareClassicIncrement( handle: _handle, blockIndex: blockIndex, value: value, ); } // DOC: Future decrement({required int blockIndex, required int value}) { return hostApi.mifareClassicDecrement( handle: _handle, blockIndex: blockIndex, value: value, ); } // DOC: Future readBlock({required int blockIndex}) { return hostApi.mifareClassicReadBlock( handle: _handle, blockIndex: blockIndex, ); } // DOC: Future writeBlock({required int blockIndex, required Uint8List data}) { return hostApi.mifareClassicWriteBlock( handle: _handle, blockIndex: blockIndex, data: data, ); } // DOC: Future restore({required int blockIndex}) { return hostApi.mifareClassicRestore( handle: _handle, blockIndex: blockIndex, ); } // DOC: Future transfer({required int blockIndex}) { return hostApi.mifareClassicTransfer( handle: _handle, blockIndex: blockIndex, ); } // DOC: Future transceive(Uint8List bytes) { return hostApi.mifareClassicTransceive(handle: _handle, bytes: bytes); } } // DOC: enum MifareClassicTypeAndroid { // DOC: classic, // DOC: plus, // DOC: pro, // DOC: unknown, } ================================================ FILE: lib/src/nfc_manager_android/tags/mifare_ultralight.dart ================================================ import 'dart:typed_data'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to MIFARE Ultralight operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class MifareUltralightAndroid { const MifareUltralightAndroid._( this._handle, { required this.tag, required this.type, }); final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; // DOC: final MifareUltralightTypeAndroid type; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static MifareUltralightAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.mifareUltralight; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return MifareUltralightAndroid._( data.handle, tag: atag, type: MifareUltralightTypeAndroid.values.byName(tech.type.name), ); } // DOC: Future getMaxTransceiveLength() { return hostApi.mifareUltralightGetMaxTransceiveLength(handle: _handle); } // DOC: Future getTimeout() { return hostApi.mifareUltralightGetTimeout(handle: _handle); } // DOC: Future setTimeout(int timeout) { return hostApi.mifareUltralightSetTimeout( handle: _handle, timeout: timeout, ); } // DOC: Future readPages({required int pageOffset}) { return hostApi.mifareUltralightReadPages( handle: _handle, pageOffset: pageOffset, ); } // DOC: Future writePage({required int pageOffset, required Uint8List data}) { return hostApi.mifareUltralightWritePage( handle: _handle, pageOffset: pageOffset, data: data, ); } // DOC: Future transceive(Uint8List bytes) { return hostApi.mifareUltralightTransceive(handle: _handle, bytes: bytes); } } // DOC: enum MifareUltralightTypeAndroid { // DOC: ultralight, // DOC: ultralightC, // DOC: unknown, } ================================================ FILE: lib/src/nfc_manager_android/tags/ndef.dart ================================================ import 'package:ndef_record/ndef_record.dart'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to NDEF operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class NdefAndroid { const NdefAndroid._( this._handle, { required this.tag, required this.type, required this.maxSize, required this.canMakeReadOnly, required this.isWritable, required this.cachedNdefMessage, }); final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; // DOC: final String type; // DOC: final int maxSize; // DOC: final bool canMakeReadOnly; // DOC: final bool isWritable; // DOC: final NdefMessage? cachedNdefMessage; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static NdefAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.ndef; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return NdefAndroid._( data.handle, tag: atag, type: tech.type, maxSize: tech.maxSize, canMakeReadOnly: tech.canMakeReadOnly, isWritable: tech.isWritable, cachedNdefMessage: tech.cachedNdefMessage == null ? null : NdefMessage( records: tech.cachedNdefMessage!.records .map( (r) => NdefRecord( typeNameFormat: TypeNameFormat.values.byName(r.tnf.name), type: r.type, identifier: r.id, payload: r.payload, ), ) .toList(), ), ); } // DOC: Future getNdefMessage() { return hostApi .ndefGetNdefMessage(handle: _handle) .then( (value) => value == null ? null : NdefMessage( records: value.records .map( (r) => NdefRecord( typeNameFormat: TypeNameFormat.values.byName( r.tnf.name, ), type: r.type, identifier: r.id, payload: r.payload, ), ) .toList(), ), ); } // DOC: Future writeNdefMessage(NdefMessage message) { return hostApi.ndefWriteNdefMessage( handle: _handle, message: NdefMessagePigeon( records: message.records .map( (e) => NdefRecordPigeon( tnf: TypeNameFormatPigeon.values.byName(e.typeNameFormat.name), type: e.type, id: e.identifier, payload: e.payload, ), ) .toList(), ), ); } // DOC: Future makeReadOnly() { return hostApi.ndefMakeReadOnly(handle: _handle); } } ================================================ FILE: lib/src/nfc_manager_android/tags/ndef_formatable.dart ================================================ import 'package:ndef_record/ndef_record.dart'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to NDEF format operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class NdefFormatableAndroid { const NdefFormatableAndroid._(this._handle, {required this.tag}); final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static NdefFormatableAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.ndefFormatable; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return NdefFormatableAndroid._(data.handle, tag: atag); } // DOC: Future format(NdefMessage firstMessage) { return hostApi.ndefFormatableFormat( handle: _handle, firstMessage: NdefMessagePigeon( records: firstMessage.records .map( (e) => NdefRecordPigeon( tnf: TypeNameFormatPigeon.values.byName(e.typeNameFormat.name), type: e.type, id: e.identifier, payload: e.payload, ), ) .toList(), ), ); } // DOC: Future formatReadOnly(NdefMessage firstMessage) { return hostApi.ndefFormatableFormatReadOnly( handle: _handle, firstMessage: NdefMessagePigeon( records: firstMessage.records .map( (e) => NdefRecordPigeon( tnf: TypeNameFormatPigeon.values.byName(e.typeNameFormat.name), type: e.type, id: e.identifier, payload: e.payload, ), ) .toList(), ), ); } } ================================================ FILE: lib/src/nfc_manager_android/tags/nfc_a.dart ================================================ import 'dart:typed_data'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to NFC-A (ISO 14443-3A) operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class NfcAAndroid { const NfcAAndroid._( this._handle, { required this.tag, required this.atqa, required this.sak, }); final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; // DOC: final Uint8List atqa; // DOC: final int sak; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static NfcAAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.nfcA; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return NfcAAndroid._( data.handle, tag: atag, atqa: tech.atqa, sak: tech.sak, ); } // DOC: Future getMaxTransceiveLength() { return hostApi.nfcAGetMaxTransceiveLength(handle: _handle); } // DOC: Future getTimeout() { return hostApi.nfcAGetTimeout(handle: _handle); } // DOC: Future setTimeout(int timeout) { return hostApi.nfcASetTimeout(handle: _handle, timeout: timeout); } // DOC: Future transceive(Uint8List bytes) { return hostApi.nfcATransceive(handle: _handle, bytes: bytes); } } ================================================ FILE: lib/src/nfc_manager_android/tags/nfc_b.dart ================================================ import 'dart:typed_data'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to NFC-B (ISO 14443-3B) operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class NfcBAndroid { const NfcBAndroid._( this._handle, { required this.tag, required this.applicationData, required this.protocolInfo, }); final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; // DOC: final Uint8List applicationData; // DOC: final Uint8List protocolInfo; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static NfcBAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.nfcB; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return NfcBAndroid._( data.handle, tag: atag, applicationData: tech.applicationData, protocolInfo: tech.protocolInfo, ); } // DOC: Future getMaxTransceiveLength() { return hostApi.nfcBGetMaxTransceiveLength(handle: _handle); } // DOC: Future transceive(Uint8List bytes) { return hostApi.nfcBTransceive(handle: _handle, bytes: bytes); } } ================================================ FILE: lib/src/nfc_manager_android/tags/nfc_barcode.dart ================================================ import 'dart:typed_data'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to tags containing just a barcode for Android. /// /// Acquire an instance using [from(NfcTag)]. final class NfcBarcodeAndroid { const NfcBarcodeAndroid._( this._handle, { required this.tag, required this.type, required this.barcode, }); // ignore: unused_field final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; // DOC: final NfcBarcodeTypeAndroid type; // DOC: final Uint8List barcode; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static NfcBarcodeAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.nfcBarcode; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return NfcBarcodeAndroid._( data.handle, tag: atag, type: NfcBarcodeTypeAndroid.values.byName(tech.type.name), barcode: tech.barcode, ); } } // DOC: enum NfcBarcodeTypeAndroid { // DOC: kovio, // DOC: unknown, } ================================================ FILE: lib/src/nfc_manager_android/tags/nfc_f.dart ================================================ import 'dart:typed_data'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to NFC-F (JIS 6319-4) operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class NfcFAndroid { const NfcFAndroid._( this._handle, { required this.tag, required this.manufacturer, required this.systemCode, }); final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; // DOC: final Uint8List manufacturer; // DOC: final Uint8List systemCode; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static NfcFAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.nfcF; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return NfcFAndroid._( data.handle, tag: atag, manufacturer: tech.manufacturer, systemCode: tech.systemCode, ); } // DOC: Future getMaxTransceiveLength() { return hostApi.nfcFGetMaxTransceiveLength(handle: _handle); } // DOC: Future getTimeout() { return hostApi.nfcFGetTimeout(handle: _handle); } // DOC: Future setTimeout(int timeout) { return hostApi.nfcFSetTimeout(handle: _handle, timeout: timeout); } // DOC: Future transceive(Uint8List bytes) { return hostApi.nfcFTransceive(handle: _handle, bytes: bytes); } } ================================================ FILE: lib/src/nfc_manager_android/tags/nfc_v.dart ================================================ import 'dart:typed_data'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_android/tags/tag.dart'; /// Provides access to NFC-V (ISO 15693) operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class NfcVAndroid { const NfcVAndroid._( this._handle, { required this.tag, required this.dsfId, required this.responseFlags, }); final String _handle; /// The tag instance backing of this instance. final NfcTagAndroid tag; // DOC: final int dsfId; // DOC: final int responseFlags; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static NfcVAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.nfcV; final atag = NfcTagAndroid.from(tag); if (data == null || tech == null || atag == null) return null; return NfcVAndroid._( data.handle, tag: atag, dsfId: tech.dsfId, responseFlags: tech.responseFlags, ); } // DOC: Future getMaxTransceiveLength() { return hostApi.nfcVGetMaxTransceiveLength(handle: _handle); } // DOC: Future transceive(Uint8List bytes) { return hostApi.nfcVTransceive(handle: _handle, bytes: bytes); } } ================================================ FILE: lib/src/nfc_manager_android/tags/tag.dart ================================================ import 'dart:typed_data'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart'; /// Provides access to tag operations for Android. /// /// Acquire an instance using [from(NfcTag)]. final class NfcTagAndroid { const NfcTagAndroid._({required this.id, required this.techList}); /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static NfcTagAndroid? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; if (data == null) return null; return NfcTagAndroid._(id: data.id, techList: data.techList.cast()); } // DOC: final Uint8List id; // DOC: final List techList; } ================================================ FILE: lib/src/nfc_manager_ios/nfc_manager.dart ================================================ import 'package:flutter/foundation.dart'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.g.dart'; /// Provides access to the NFC session for iOS. final class NfcManagerIos { NfcManagerIos._() { _FlutterApiIos(this); } /// The default instance of [NfcManagerIos] to use. static NfcManagerIos get instance => _instance ??= NfcManagerIos._(); static NfcManagerIos? _instance; void Function(NfcTag)? _tagSessionDidDetectTag; void Function()? _tagSessionDidBecomeActive; void Function(NfcReaderSessionErrorIos)? _tagSessionDidInvalidateWithError; void Function(List)? _vasSessionDidReceive; void Function()? _vasSessionDidBecomeActive; void Function(NfcReaderSessionErrorIos)? _vasSessionDidInvalidateWithError; // DOC: Future tagSessionReadingAvailable() { return hostApi.tagSessionReadingAvailable(); } // DOC: Future tagSessionBegin({ required Set pollingOptions, required void Function(NfcTag)? didDetectTag, void Function()? didBecomeActive, void Function(NfcReaderSessionErrorIos)? didInvalidateWithError, String? alertMessage, bool invalidateAfterFirstRead = true, }) { _tagSessionDidDetectTag = didDetectTag; _tagSessionDidBecomeActive = didBecomeActive; _tagSessionDidInvalidateWithError = didInvalidateWithError; return hostApi.tagSessionBegin( pollingOptions: pollingOptions .map((e) => PollingOptionPigeon.values.byName(e.name)) .toList(), alertMessage: alertMessage, invalidateAfterFirstRead: invalidateAfterFirstRead, ); } // DOC: Future tagSessionInvalidate({ String? alertMessage, String? errorMessage, }) { _tagSessionDidDetectTag = null; _tagSessionDidBecomeActive = null; _tagSessionDidInvalidateWithError = null; return hostApi.tagSessionInvalidate( alertMessage: alertMessage, errorMessage: errorMessage, ); } // DOC: Future tagSessionSetAlertMessage({required String alertMessage}) { return hostApi.tagSessionSetAlertMessage(alertMessage: alertMessage); } // DOC: Future tagSessionRestartPolling() { return hostApi.tagSessionRestartPolling(); } // DOC: Future vasSessionBegin({ required List configurations, required void Function(List configurations) didReceive, void Function()? didBecomeActive, void Function(NfcReaderSessionErrorIos error)? didInvalidateWithError, String? alertMessage, }) { _vasSessionDidBecomeActive = didBecomeActive; _vasSessionDidInvalidateWithError = didInvalidateWithError; _vasSessionDidReceive = didReceive; return hostApi.vasSessionBegin( configurations: configurations .map( (e) => NfcVasCommandConfigurationPigeon( mode: NfcVasCommandConfigurationModePigeon.values.byName( e.mode.name, ), passIdentifier: e.passIdentifier, url: e.url?.toString(), ), ) .toList(), alertMessage: alertMessage, ); } // DOC: Future vasSessionInvalidate({ String? alertMessage, String? errorMessage, }) { _vasSessionDidBecomeActive = null; _vasSessionDidInvalidateWithError = null; _vasSessionDidReceive = null; return hostApi.vasSessionInvalidate( alertMessage: alertMessage, errorMessage: errorMessage, ); } // DOC: Future vasSessionSetAlertMessage({required String alertMessage}) { return hostApi.vasSessionSetAlertMessage(alertMessage: alertMessage); } } final class _FlutterApiIos implements FlutterApiPigeon { _FlutterApiIos(this._instance) { FlutterApiPigeon.setUp(this); } final NfcManagerIos _instance; @override void tagSessionDidBecomeActive() { _instance._tagSessionDidBecomeActive?.call(); } @override void tagSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error) { _instance._tagSessionDidInvalidateWithError?.call( NfcReaderSessionErrorIos( code: NfcReaderErrorCodeIos.values.byName(error.code.name), message: error.message, ), ); } @override void tagSessionDidDetect(TagPigeon tag) { _instance._tagSessionDidDetectTag?.call( // ignore: invalid_use_of_visible_for_testing_member NfcTag(data: tag), ); } @override void vasSessionDidBecomeActive() { _instance._vasSessionDidBecomeActive?.call(); } @override void vasSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error) { _instance._vasSessionDidInvalidateWithError?.call( NfcReaderSessionErrorIos( code: NfcReaderErrorCodeIos.values.byName(error.code.name), message: error.message, ), ); } @override void vasSessionDidReceive(List responses) { _instance._vasSessionDidReceive?.call( responses .map( (e) => NfcVasResponseIos( status: NfcVasResponseErrorCodeIos.values.byName(e!.status.name), vasData: e.vasData, mobileToken: e.mobileToken, ), ) .toList(), ); } } // DOC: final class NfcVasCommandConfigurationIos { // DOC: @visibleForTesting const NfcVasCommandConfigurationIos({ required this.mode, required this.passIdentifier, this.url, }); // DOC: final NfcVasCommandConfigurationModeIos mode; // DOC: final String passIdentifier; // DOC: final Uri? url; } // DOC: final class NfcVasResponseIos { // DOC: @visibleForTesting const NfcVasResponseIos({ required this.status, required this.vasData, required this.mobileToken, }); // DOC: final NfcVasResponseErrorCodeIos status; // DOC: final Uint8List vasData; // DOC: final Uint8List mobileToken; } // DOC: final class NfcReaderSessionErrorIos { // DOC: @visibleForTesting const NfcReaderSessionErrorIos({required this.code, required this.message}); // DOC: final NfcReaderErrorCodeIos code; // DOC: final String message; } // DOC: enum NfcVasCommandConfigurationModeIos { // DOC: normal, // DOC: urlOnly, } // DOC: enum NfcReaderErrorCodeIos { // DOC: readerSessionInvalidationErrorFirstNDEFTagRead, // DOC: readerSessionInvalidationErrorSessionTerminatedUnexpectedly, // DOC: readerSessionInvalidationErrorSessionTimeout, // DOC: readerSessionInvalidationErrorSystemIsBusy, // DOC: readerSessionInvalidationErrorUserCanceled, // DOC: ndefReaderSessionErrorTagNotWritable, // DOC: ndefReaderSessionErrorTagSizeTooSmall, // DOC: ndefReaderSessionErrorTagUpdateFailure, // DOC: ndefReaderSessionErrorZeroLengthMessage, // DOC: readerTransceiveErrorRetryExceeded, // DOC: readerTransceiveErrorTagConnectionLost, // DOC: readerTransceiveErrorTagNotConnected, // DOC: readerTransceiveErrorTagResponseError, // DOC: readerTransceiveErrorSessionInvalidated, // DOC: readerTransceiveErrorPacketTooLong, // DOC: tagCommandConfigurationErrorInvalidParameters, // DOC: readerErrorUnsupportedFeature, // DOC: readerErrorInvalidParameter, // DOC: readerErrorInvalidParameterLength, // DOC: readerErrorParameterOutOfBound, // DOC: readerErrorRadioDisabled, // DOC: readerErrorSecurityViolation, } // DOC: enum NfcVasResponseErrorCodeIos { // DOC: success, // DOC: userIntervention, // DOC: dataNotActivated, // DOC: dataNotFound, // DOC: incorrectData, // DOC: unsupportedApplicationVersion, // DOC: wrongLCField, // DOC: wrongParameters, } ================================================ FILE: lib/src/nfc_manager_ios/nfc_manager_platform.dart ================================================ import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_ios/nfc_manager.dart'; final class NfcManagerIosPlatform implements NfcManager { @override Future isAvailable() { return NfcManagerIos.instance.tagSessionReadingAvailable(); } @override Future checkAvailability() async { final isAvailable = await NfcManagerIos.instance .tagSessionReadingAvailable(); return isAvailable ? NfcAvailability.enabled : NfcAvailability.unsupported; } @override Future startSession({ required Set pollingOptions, required void Function(NfcTag tag) onDiscovered, String? alertMessageIos, bool invalidateAfterFirstReadIos = true, void Function(NfcReaderSessionErrorIos)? onSessionErrorIos, bool noPlatformSoundsAndroid = false, }) { return NfcManagerIos.instance.tagSessionBegin( pollingOptions: pollingOptions, didDetectTag: onDiscovered, alertMessage: alertMessageIos, invalidateAfterFirstRead: invalidateAfterFirstReadIos, didInvalidateWithError: onSessionErrorIos, ); } @override Future stopSession({String? alertMessageIos, String? errorMessageIos}) { return NfcManagerIos.instance.tagSessionInvalidate( alertMessage: alertMessageIos, errorMessage: errorMessageIos, ); } } ================================================ FILE: lib/src/nfc_manager_ios/pigeon.dart ================================================ import 'package:nfc_manager/src/nfc_manager_ios/pigeon.g.dart'; final hostApi = HostApiPigeon(); ================================================ FILE: lib/src/nfc_manager_ios/pigeon.g.dart ================================================ // Autogenerated from Pigeon (v26.3.3), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: unused_import, unused_shown_name // ignore_for_file: type=lint import 'dart:async'; import 'dart:typed_data' show Float64List, Int32List, Int64List; import 'package:flutter/services.dart'; import 'package:meta/meta.dart' show immutable, protected, visibleForTesting; Object? _extractReplyValueOrThrow( List? replyList, String channelName, { required bool isNullValid, }) { if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel: "$channelName".', ); } else if (replyList.length > 1) { throw PlatformException( code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); } else if (!isNullValid && (replyList.isNotEmpty && replyList[0] == null)) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } return replyList.firstOrNull; } List wrapResponse({ Object? result, PlatformException? error, bool empty = false, }) { if (empty) { return []; } if (error == null) { return [result]; } return [error.code, error.message, error.details]; } bool _deepEquals(Object? a, Object? b) { if (identical(a, b)) { return true; } if (a is double && b is double) { if (a.isNaN && b.isNaN) { return true; } return a == b; } if (a is List && b is List) { return a.length == b.length && a.indexed.every( ((int, dynamic) item) => _deepEquals(item.$2, b[item.$1]), ); } if (a is Map && b is Map) { if (a.length != b.length) { return false; } for (final MapEntry entryA in a.entries) { bool found = false; for (final MapEntry entryB in b.entries) { if (_deepEquals(entryA.key, entryB.key)) { if (_deepEquals(entryA.value, entryB.value)) { found = true; break; } else { return false; } } } if (!found) { return false; } } return true; } return a == b; } int _deepHash(Object? value) { if (value is List) { return Object.hashAll(value.map(_deepHash)); } if (value is Map) { int result = 0; for (final MapEntry entry in value.entries) { result += (_deepHash(entry.key) * 31) ^ _deepHash(entry.value); } return result; } if (value is double && value.isNaN) { // Normalize NaN to a consistent hash. return 0x7FF8000000000000.hashCode; } if (value is double && value == 0.0) { // Normalize -0.0 to 0.0 so they have the same hash code. return 0.0.hashCode; } return value.hashCode; } enum PollingOptionPigeon { iso14443, iso15693, iso18092 } enum NdefStatusPigeon { notSupported, readWrite, readOnly } enum TypeNameFormatPigeon { empty, wellKnown, media, absoluteUri, external, unknown, unchanged, } enum FeliCaPollingRequestCodePigeon { noRequest, systemCode, communicationPerformance, } enum FeliCaPollingTimeSlotPigeon { max1, max2, max4, max8, max16 } enum MiFareFamilyPigeon { unknown, ultralight, plus, desfire } enum Iso15693RequestFlagPigeon { address, dualSubCarriers, highDataRate, option, protocolExtension, select, } enum NfcVasCommandConfigurationModePigeon { normal, urlOnly } enum NfcReaderErrorCodePigeon { readerSessionInvalidationErrorFirstNdefTagRead, readerSessionInvalidationErrorSessionTerminatedUnexpectedly, readerSessionInvalidationErrorSessionTimeout, readerSessionInvalidationErrorSystemIsBusy, readerSessionInvalidationErrorUserCanceled, ndefReaderSessionErrorTagNotWritable, ndefReaderSessionErrorTagSizeTooSmall, ndefReaderSessionErrorTagUpdateFailure, ndefReaderSessionErrorZeroLengthMessage, readerTransceiveErrorRetryExceeded, readerTransceiveErrorTagConnectionLost, readerTransceiveErrorTagNotConnected, readerTransceiveErrorTagResponseError, readerTransceiveErrorSessionInvalidated, readerTransceiveErrorPacketTooLong, tagCommandConfigurationErrorInvalidParameters, readerErrorAccessNotAccepted, readerErrorIneligible, readerErrorUnsupportedFeature, readerErrorInvalidParameter, readerErrorInvalidParameterLength, readerErrorParameterOutOfBound, readerErrorRadioDisabled, readerErrorSecurityViolation, } enum NfcVasResponseErrorCodePigeon { success, userIntervention, dataNotActivated, dataNotFound, incorrectData, unsupportedApplicationVersion, wrongLCField, wrongParameters, } class TagPigeon { TagPigeon({ required this.handle, this.ndef, this.feliCa, this.iso15693, this.iso7816, this.miFare, }); String handle; NdefPigeon? ndef; FeliCaPigeon? feliCa; Iso15693Pigeon? iso15693; Iso7816Pigeon? iso7816; MiFarePigeon? miFare; List _toList() { return [handle, ndef, feliCa, iso15693, iso7816, miFare]; } Object encode() { return _toList(); } static TagPigeon decode(Object result) { result as List; return TagPigeon( handle: result[0]! as String, ndef: result[1] as NdefPigeon?, feliCa: result[2] as FeliCaPigeon?, iso15693: result[3] as Iso15693Pigeon?, iso7816: result[4] as Iso7816Pigeon?, miFare: result[5] as MiFarePigeon?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! TagPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(handle, other.handle) && _deepEquals(ndef, other.ndef) && _deepEquals(feliCa, other.feliCa) && _deepEquals(iso15693, other.iso15693) && _deepEquals(iso7816, other.iso7816) && _deepEquals(miFare, other.miFare); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NdefPigeon { NdefPigeon({ required this.status, required this.capacity, this.cachedNdefMessage, }); NdefStatusPigeon status; int capacity; NdefMessagePigeon? cachedNdefMessage; List _toList() { return [status, capacity, cachedNdefMessage]; } Object encode() { return _toList(); } static NdefPigeon decode(Object result) { result as List; return NdefPigeon( status: result[0]! as NdefStatusPigeon, capacity: result[1]! as int, cachedNdefMessage: result[2] as NdefMessagePigeon?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NdefPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(status, other.status) && _deepEquals(capacity, other.capacity) && _deepEquals(cachedNdefMessage, other.cachedNdefMessage); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class FeliCaPigeon { FeliCaPigeon({required this.currentSystemCode, required this.currentIDm}); Uint8List currentSystemCode; Uint8List currentIDm; List _toList() { return [currentSystemCode, currentIDm]; } Object encode() { return _toList(); } static FeliCaPigeon decode(Object result) { result as List; return FeliCaPigeon( currentSystemCode: result[0]! as Uint8List, currentIDm: result[1]! as Uint8List, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! FeliCaPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(currentSystemCode, other.currentSystemCode) && _deepEquals(currentIDm, other.currentIDm); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class Iso15693Pigeon { Iso15693Pigeon({ required this.icManufacturerCode, required this.icSerialNumber, required this.identifier, }); int icManufacturerCode; Uint8List icSerialNumber; Uint8List identifier; List _toList() { return [icManufacturerCode, icSerialNumber, identifier]; } Object encode() { return _toList(); } static Iso15693Pigeon decode(Object result) { result as List; return Iso15693Pigeon( icManufacturerCode: result[0]! as int, icSerialNumber: result[1]! as Uint8List, identifier: result[2]! as Uint8List, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! Iso15693Pigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(icManufacturerCode, other.icManufacturerCode) && _deepEquals(icSerialNumber, other.icSerialNumber) && _deepEquals(identifier, other.identifier); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class Iso7816Pigeon { Iso7816Pigeon({ required this.initialSelectedAID, required this.identifier, this.historicalBytes, this.applicationData, required this.proprietaryApplicationDataCoding, }); String initialSelectedAID; Uint8List identifier; Uint8List? historicalBytes; Uint8List? applicationData; bool proprietaryApplicationDataCoding; List _toList() { return [ initialSelectedAID, identifier, historicalBytes, applicationData, proprietaryApplicationDataCoding, ]; } Object encode() { return _toList(); } static Iso7816Pigeon decode(Object result) { result as List; return Iso7816Pigeon( initialSelectedAID: result[0]! as String, identifier: result[1]! as Uint8List, historicalBytes: result[2] as Uint8List?, applicationData: result[3] as Uint8List?, proprietaryApplicationDataCoding: result[4]! as bool, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! Iso7816Pigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(initialSelectedAID, other.initialSelectedAID) && _deepEquals(identifier, other.identifier) && _deepEquals(historicalBytes, other.historicalBytes) && _deepEquals(applicationData, other.applicationData) && _deepEquals( proprietaryApplicationDataCoding, other.proprietaryApplicationDataCoding, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class MiFarePigeon { MiFarePigeon({ required this.mifareFamily, required this.identifier, this.historicalBytes, }); MiFareFamilyPigeon mifareFamily; Uint8List identifier; Uint8List? historicalBytes; List _toList() { return [mifareFamily, identifier, historicalBytes]; } Object encode() { return _toList(); } static MiFarePigeon decode(Object result) { result as List; return MiFarePigeon( mifareFamily: result[0]! as MiFareFamilyPigeon, identifier: result[1]! as Uint8List, historicalBytes: result[2] as Uint8List?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! MiFarePigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(mifareFamily, other.mifareFamily) && _deepEquals(identifier, other.identifier) && _deepEquals(historicalBytes, other.historicalBytes); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NdefQueryStatusPigeon { NdefQueryStatusPigeon({required this.status, required this.capacity}); NdefStatusPigeon status; int capacity; List _toList() { return [status, capacity]; } Object encode() { return _toList(); } static NdefQueryStatusPigeon decode(Object result) { result as List; return NdefQueryStatusPigeon( status: result[0]! as NdefStatusPigeon, capacity: result[1]! as int, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NdefQueryStatusPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(status, other.status) && _deepEquals(capacity, other.capacity); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NdefMessagePigeon { NdefMessagePigeon({required this.records}); List records; List _toList() { return [records]; } Object encode() { return _toList(); } static NdefMessagePigeon decode(Object result) { result as List; return NdefMessagePigeon( records: (result[0]! as List).cast(), ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NdefMessagePigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(records, other.records); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NdefPayloadPigeon { NdefPayloadPigeon({ required this.typeNameFormat, required this.type, required this.identifier, required this.payload, }); TypeNameFormatPigeon typeNameFormat; Uint8List type; Uint8List identifier; Uint8List payload; List _toList() { return [typeNameFormat, type, identifier, payload]; } Object encode() { return _toList(); } static NdefPayloadPigeon decode(Object result) { result as List; return NdefPayloadPigeon( typeNameFormat: result[0]! as TypeNameFormatPigeon, type: result[1]! as Uint8List, identifier: result[2]! as Uint8List, payload: result[3]! as Uint8List, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NdefPayloadPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(typeNameFormat, other.typeNameFormat) && _deepEquals(type, other.type) && _deepEquals(identifier, other.identifier) && _deepEquals(payload, other.payload); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class FeliCaPollingResponsePigeon { FeliCaPollingResponsePigeon({ required this.manufacturerParameter, this.requestData, }); Uint8List manufacturerParameter; Uint8List? requestData; List _toList() { return [manufacturerParameter, requestData]; } Object encode() { return _toList(); } static FeliCaPollingResponsePigeon decode(Object result) { result as List; return FeliCaPollingResponsePigeon( manufacturerParameter: result[0]! as Uint8List, requestData: result[1] as Uint8List?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! FeliCaPollingResponsePigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(manufacturerParameter, other.manufacturerParameter) && _deepEquals(requestData, other.requestData); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class FeliCaReadWithoutEncryptionResponsePigeon { FeliCaReadWithoutEncryptionResponsePigeon({ required this.statusFlag1, required this.statusFlag2, required this.blockData, }); int statusFlag1; int statusFlag2; List blockData; List _toList() { return [statusFlag1, statusFlag2, blockData]; } Object encode() { return _toList(); } static FeliCaReadWithoutEncryptionResponsePigeon decode(Object result) { result as List; return FeliCaReadWithoutEncryptionResponsePigeon( statusFlag1: result[0]! as int, statusFlag2: result[1]! as int, blockData: (result[2]! as List).cast(), ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! FeliCaReadWithoutEncryptionResponsePigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(statusFlag1, other.statusFlag1) && _deepEquals(statusFlag2, other.statusFlag2) && _deepEquals(blockData, other.blockData); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class FeliCaRequestServiceV2ResponsePigeon { FeliCaRequestServiceV2ResponsePigeon({ required this.statusFlag1, required this.statusFlag2, required this.encryptionIdentifier, this.nodeKeyVersionListAES, this.nodeKeyVersionListDES, }); int statusFlag1; int statusFlag2; int encryptionIdentifier; List? nodeKeyVersionListAES; List? nodeKeyVersionListDES; List _toList() { return [ statusFlag1, statusFlag2, encryptionIdentifier, nodeKeyVersionListAES, nodeKeyVersionListDES, ]; } Object encode() { return _toList(); } static FeliCaRequestServiceV2ResponsePigeon decode(Object result) { result as List; return FeliCaRequestServiceV2ResponsePigeon( statusFlag1: result[0]! as int, statusFlag2: result[1]! as int, encryptionIdentifier: result[2]! as int, nodeKeyVersionListAES: (result[3] as List?)?.cast(), nodeKeyVersionListDES: (result[4] as List?)?.cast(), ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! FeliCaRequestServiceV2ResponsePigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(statusFlag1, other.statusFlag1) && _deepEquals(statusFlag2, other.statusFlag2) && _deepEquals(encryptionIdentifier, other.encryptionIdentifier) && _deepEquals(nodeKeyVersionListAES, other.nodeKeyVersionListAES) && _deepEquals(nodeKeyVersionListDES, other.nodeKeyVersionListDES); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class FeliCaRequestSpecificationVersionResponsePigeon { FeliCaRequestSpecificationVersionResponsePigeon({ required this.statusFlag1, required this.statusFlag2, this.basicVersion, this.optionVersion, }); int statusFlag1; int statusFlag2; Uint8List? basicVersion; Uint8List? optionVersion; List _toList() { return [statusFlag1, statusFlag2, basicVersion, optionVersion]; } Object encode() { return _toList(); } static FeliCaRequestSpecificationVersionResponsePigeon decode(Object result) { result as List; return FeliCaRequestSpecificationVersionResponsePigeon( statusFlag1: result[0]! as int, statusFlag2: result[1]! as int, basicVersion: result[2] as Uint8List?, optionVersion: result[3] as Uint8List?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! FeliCaRequestSpecificationVersionResponsePigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(statusFlag1, other.statusFlag1) && _deepEquals(statusFlag2, other.statusFlag2) && _deepEquals(basicVersion, other.basicVersion) && _deepEquals(optionVersion, other.optionVersion); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class FeliCaStatusFlagPigeon { FeliCaStatusFlagPigeon({ required this.statusFlag1, required this.statusFlag2, }); int statusFlag1; int statusFlag2; List _toList() { return [statusFlag1, statusFlag2]; } Object encode() { return _toList(); } static FeliCaStatusFlagPigeon decode(Object result) { result as List; return FeliCaStatusFlagPigeon( statusFlag1: result[0]! as int, statusFlag2: result[1]! as int, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! FeliCaStatusFlagPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(statusFlag1, other.statusFlag1) && _deepEquals(statusFlag2, other.statusFlag2); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class Iso7816ApduPigeon { Iso7816ApduPigeon({ required this.instructionClass, required this.instructionCode, required this.p1Parameter, required this.p2Parameter, required this.data, required this.expectedResponseLength, }); int instructionClass; int instructionCode; int p1Parameter; int p2Parameter; Uint8List data; int expectedResponseLength; List _toList() { return [ instructionClass, instructionCode, p1Parameter, p2Parameter, data, expectedResponseLength, ]; } Object encode() { return _toList(); } static Iso7816ApduPigeon decode(Object result) { result as List; return Iso7816ApduPigeon( instructionClass: result[0]! as int, instructionCode: result[1]! as int, p1Parameter: result[2]! as int, p2Parameter: result[3]! as int, data: result[4]! as Uint8List, expectedResponseLength: result[5]! as int, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! Iso7816ApduPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(instructionClass, other.instructionClass) && _deepEquals(instructionCode, other.instructionCode) && _deepEquals(p1Parameter, other.p1Parameter) && _deepEquals(p2Parameter, other.p2Parameter) && _deepEquals(data, other.data) && _deepEquals(expectedResponseLength, other.expectedResponseLength); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class Iso7816ResponseApduPigeon { Iso7816ResponseApduPigeon({ required this.payload, required this.statusWord1, required this.statusWord2, }); Uint8List payload; int statusWord1; int statusWord2; List _toList() { return [payload, statusWord1, statusWord2]; } Object encode() { return _toList(); } static Iso7816ResponseApduPigeon decode(Object result) { result as List; return Iso7816ResponseApduPigeon( payload: result[0]! as Uint8List, statusWord1: result[1]! as int, statusWord2: result[2]! as int, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! Iso7816ResponseApduPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(payload, other.payload) && _deepEquals(statusWord1, other.statusWord1) && _deepEquals(statusWord2, other.statusWord2); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class Iso15693SystemInfoPigeon { Iso15693SystemInfoPigeon({ required this.dataStorageFormatIdentifier, required this.applicationFamilyIdentifier, required this.blockSize, required this.totalBlocks, required this.icReference, }); int dataStorageFormatIdentifier; int applicationFamilyIdentifier; int blockSize; int totalBlocks; int icReference; List _toList() { return [ dataStorageFormatIdentifier, applicationFamilyIdentifier, blockSize, totalBlocks, icReference, ]; } Object encode() { return _toList(); } static Iso15693SystemInfoPigeon decode(Object result) { result as List; return Iso15693SystemInfoPigeon( dataStorageFormatIdentifier: result[0]! as int, applicationFamilyIdentifier: result[1]! as int, blockSize: result[2]! as int, totalBlocks: result[3]! as int, icReference: result[4]! as int, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! Iso15693SystemInfoPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals( dataStorageFormatIdentifier, other.dataStorageFormatIdentifier, ) && _deepEquals( applicationFamilyIdentifier, other.applicationFamilyIdentifier, ) && _deepEquals(blockSize, other.blockSize) && _deepEquals(totalBlocks, other.totalBlocks) && _deepEquals(icReference, other.icReference); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NfcReaderSessionErrorPigeon { NfcReaderSessionErrorPigeon({required this.code, required this.message}); NfcReaderErrorCodePigeon code; String message; List _toList() { return [code, message]; } Object encode() { return _toList(); } static NfcReaderSessionErrorPigeon decode(Object result) { result as List; return NfcReaderSessionErrorPigeon( code: result[0]! as NfcReaderErrorCodePigeon, message: result[1]! as String, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NfcReaderSessionErrorPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(code, other.code) && _deepEquals(message, other.message); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NfcVasCommandConfigurationPigeon { NfcVasCommandConfigurationPigeon({ required this.mode, required this.passIdentifier, this.url, }); NfcVasCommandConfigurationModePigeon mode; String passIdentifier; String? url; List _toList() { return [mode, passIdentifier, url]; } Object encode() { return _toList(); } static NfcVasCommandConfigurationPigeon decode(Object result) { result as List; return NfcVasCommandConfigurationPigeon( mode: result[0]! as NfcVasCommandConfigurationModePigeon, passIdentifier: result[1]! as String, url: result[2] as String?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NfcVasCommandConfigurationPigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(mode, other.mode) && _deepEquals(passIdentifier, other.passIdentifier) && _deepEquals(url, other.url); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class NfcVasResponsePigeon { NfcVasResponsePigeon({ required this.status, required this.vasData, required this.mobileToken, }); NfcVasResponseErrorCodePigeon status; Uint8List vasData; Uint8List mobileToken; List _toList() { return [status, vasData, mobileToken]; } Object encode() { return _toList(); } static NfcVasResponsePigeon decode(Object result) { result as List; return NfcVasResponsePigeon( status: result[0]! as NfcVasResponseErrorCodePigeon, vasData: result[1]! as Uint8List, mobileToken: result[2]! as Uint8List, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! NfcVasResponsePigeon || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(status, other.status) && _deepEquals(vasData, other.vasData) && _deepEquals(mobileToken, other.mobileToken); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); } class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); } else if (value is PollingOptionPigeon) { buffer.putUint8(129); writeValue(buffer, value.index); } else if (value is NdefStatusPigeon) { buffer.putUint8(130); writeValue(buffer, value.index); } else if (value is TypeNameFormatPigeon) { buffer.putUint8(131); writeValue(buffer, value.index); } else if (value is FeliCaPollingRequestCodePigeon) { buffer.putUint8(132); writeValue(buffer, value.index); } else if (value is FeliCaPollingTimeSlotPigeon) { buffer.putUint8(133); writeValue(buffer, value.index); } else if (value is MiFareFamilyPigeon) { buffer.putUint8(134); writeValue(buffer, value.index); } else if (value is Iso15693RequestFlagPigeon) { buffer.putUint8(135); writeValue(buffer, value.index); } else if (value is NfcVasCommandConfigurationModePigeon) { buffer.putUint8(136); writeValue(buffer, value.index); } else if (value is NfcReaderErrorCodePigeon) { buffer.putUint8(137); writeValue(buffer, value.index); } else if (value is NfcVasResponseErrorCodePigeon) { buffer.putUint8(138); writeValue(buffer, value.index); } else if (value is TagPigeon) { buffer.putUint8(139); writeValue(buffer, value.encode()); } else if (value is NdefPigeon) { buffer.putUint8(140); writeValue(buffer, value.encode()); } else if (value is FeliCaPigeon) { buffer.putUint8(141); writeValue(buffer, value.encode()); } else if (value is Iso15693Pigeon) { buffer.putUint8(142); writeValue(buffer, value.encode()); } else if (value is Iso7816Pigeon) { buffer.putUint8(143); writeValue(buffer, value.encode()); } else if (value is MiFarePigeon) { buffer.putUint8(144); writeValue(buffer, value.encode()); } else if (value is NdefQueryStatusPigeon) { buffer.putUint8(145); writeValue(buffer, value.encode()); } else if (value is NdefMessagePigeon) { buffer.putUint8(146); writeValue(buffer, value.encode()); } else if (value is NdefPayloadPigeon) { buffer.putUint8(147); writeValue(buffer, value.encode()); } else if (value is FeliCaPollingResponsePigeon) { buffer.putUint8(148); writeValue(buffer, value.encode()); } else if (value is FeliCaReadWithoutEncryptionResponsePigeon) { buffer.putUint8(149); writeValue(buffer, value.encode()); } else if (value is FeliCaRequestServiceV2ResponsePigeon) { buffer.putUint8(150); writeValue(buffer, value.encode()); } else if (value is FeliCaRequestSpecificationVersionResponsePigeon) { buffer.putUint8(151); writeValue(buffer, value.encode()); } else if (value is FeliCaStatusFlagPigeon) { buffer.putUint8(152); writeValue(buffer, value.encode()); } else if (value is Iso7816ApduPigeon) { buffer.putUint8(153); writeValue(buffer, value.encode()); } else if (value is Iso7816ResponseApduPigeon) { buffer.putUint8(154); writeValue(buffer, value.encode()); } else if (value is Iso15693SystemInfoPigeon) { buffer.putUint8(155); writeValue(buffer, value.encode()); } else if (value is NfcReaderSessionErrorPigeon) { buffer.putUint8(156); writeValue(buffer, value.encode()); } else if (value is NfcVasCommandConfigurationPigeon) { buffer.putUint8(157); writeValue(buffer, value.encode()); } else if (value is NfcVasResponsePigeon) { buffer.putUint8(158); writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } } @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 129: final value = readValue(buffer) as int?; return value == null ? null : PollingOptionPigeon.values[value]; case 130: final value = readValue(buffer) as int?; return value == null ? null : NdefStatusPigeon.values[value]; case 131: final value = readValue(buffer) as int?; return value == null ? null : TypeNameFormatPigeon.values[value]; case 132: final value = readValue(buffer) as int?; return value == null ? null : FeliCaPollingRequestCodePigeon.values[value]; case 133: final value = readValue(buffer) as int?; return value == null ? null : FeliCaPollingTimeSlotPigeon.values[value]; case 134: final value = readValue(buffer) as int?; return value == null ? null : MiFareFamilyPigeon.values[value]; case 135: final value = readValue(buffer) as int?; return value == null ? null : Iso15693RequestFlagPigeon.values[value]; case 136: final value = readValue(buffer) as int?; return value == null ? null : NfcVasCommandConfigurationModePigeon.values[value]; case 137: final value = readValue(buffer) as int?; return value == null ? null : NfcReaderErrorCodePigeon.values[value]; case 138: final value = readValue(buffer) as int?; return value == null ? null : NfcVasResponseErrorCodePigeon.values[value]; case 139: return TagPigeon.decode(readValue(buffer)!); case 140: return NdefPigeon.decode(readValue(buffer)!); case 141: return FeliCaPigeon.decode(readValue(buffer)!); case 142: return Iso15693Pigeon.decode(readValue(buffer)!); case 143: return Iso7816Pigeon.decode(readValue(buffer)!); case 144: return MiFarePigeon.decode(readValue(buffer)!); case 145: return NdefQueryStatusPigeon.decode(readValue(buffer)!); case 146: return NdefMessagePigeon.decode(readValue(buffer)!); case 147: return NdefPayloadPigeon.decode(readValue(buffer)!); case 148: return FeliCaPollingResponsePigeon.decode(readValue(buffer)!); case 149: return FeliCaReadWithoutEncryptionResponsePigeon.decode( readValue(buffer)!, ); case 150: return FeliCaRequestServiceV2ResponsePigeon.decode(readValue(buffer)!); case 151: return FeliCaRequestSpecificationVersionResponsePigeon.decode( readValue(buffer)!, ); case 152: return FeliCaStatusFlagPigeon.decode(readValue(buffer)!); case 153: return Iso7816ApduPigeon.decode(readValue(buffer)!); case 154: return Iso7816ResponseApduPigeon.decode(readValue(buffer)!); case 155: return Iso15693SystemInfoPigeon.decode(readValue(buffer)!); case 156: return NfcReaderSessionErrorPigeon.decode(readValue(buffer)!); case 157: return NfcVasCommandConfigurationPigeon.decode(readValue(buffer)!); case 158: return NfcVasResponsePigeon.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); } } } abstract class FlutterApiPigeon { static const MessageCodec pigeonChannelCodec = _PigeonCodec(); void tagSessionDidBecomeActive(); void tagSessionDidDetect(TagPigeon tag); void tagSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error); void vasSessionDidBecomeActive(); void vasSessionDidReceive(List responses); void vasSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error); static void setUp( FlutterApiPigeon? api, { BinaryMessenger? binaryMessenger, String messageChannelSuffix = '', }) { messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.tagSessionDidBecomeActive$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger, ); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { try { api.tagSessionDidBecomeActive(); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse( error: PlatformException(code: 'error', message: e.toString()), ); } }); } } { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.tagSessionDidDetect$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger, ); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { final List args = message! as List; final TagPigeon arg_tag = args[0]! as TagPigeon; try { api.tagSessionDidDetect(arg_tag); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse( error: PlatformException(code: 'error', message: e.toString()), ); } }); } } { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.tagSessionDidInvalidateWithError$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger, ); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { final List args = message! as List; final NfcReaderSessionErrorPigeon arg_error = args[0]! as NfcReaderSessionErrorPigeon; try { api.tagSessionDidInvalidateWithError(arg_error); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse( error: PlatformException(code: 'error', message: e.toString()), ); } }); } } { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.vasSessionDidBecomeActive$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger, ); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { try { api.vasSessionDidBecomeActive(); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse( error: PlatformException(code: 'error', message: e.toString()), ); } }); } } { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.vasSessionDidReceive$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger, ); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { final List args = message! as List; final List arg_responses = (args[0]! as List).cast(); try { api.vasSessionDidReceive(arg_responses); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse( error: PlatformException(code: 'error', message: e.toString()), ); } }); } } { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.vasSessionDidInvalidateWithError$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger, ); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { final List args = message! as List; final NfcReaderSessionErrorPigeon arg_error = args[0]! as NfcReaderSessionErrorPigeon; try { api.vasSessionDidInvalidateWithError(arg_error); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse( error: PlatformException(code: 'error', message: e.toString()), ); } }); } } } } class HostApiPigeon { /// Constructor for [HostApiPigeon]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. HostApiPigeon({ BinaryMessenger? binaryMessenger, String messageChannelSuffix = '', }) : pigeonVar_binaryMessenger = binaryMessenger, pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; Future tagSessionReadingAvailable() async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionReadingAvailable$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as bool; } Future tagSessionBegin({ required List pollingOptions, required String? alertMessage, required bool invalidateAfterFirstRead, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionBegin$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [pollingOptions, alertMessage, invalidateAfterFirstRead], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future tagSessionInvalidate({ required String? alertMessage, required String? errorMessage, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionInvalidate$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [alertMessage, errorMessage], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future tagSessionRestartPolling() async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionRestartPolling$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future tagSessionSetAlertMessage({required String alertMessage}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.tagSessionSetAlertMessage$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [alertMessage], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future vasSessionReadingAvailable() async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.vasSessionReadingAvailable$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as bool; } Future vasSessionBegin({ required List configurations, required String? alertMessage, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.vasSessionBegin$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [configurations, alertMessage], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future vasSessionInvalidate({ required String? alertMessage, required String? errorMessage, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.vasSessionInvalidate$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [alertMessage, errorMessage], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future vasSessionSetAlertMessage({required String alertMessage}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.vasSessionSetAlertMessage$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [alertMessage], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future ndefQueryNdefStatus({ required String handle, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefQueryNdefStatus$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as NdefQueryStatusPigeon; } Future ndefReadNdef({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefReadNdef$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); return pigeonVar_replyValue as NdefMessagePigeon?; } Future ndefWriteNdef({ required String handle, required NdefMessagePigeon message, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefWriteNdef$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, message], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future ndefWriteLock({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefWriteLock$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future feliCaPolling({ required String handle, required Uint8List systemCode, required FeliCaPollingRequestCodePigeon requestCode, required FeliCaPollingTimeSlotPigeon timeSlot, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaPolling$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, systemCode, requestCode, timeSlot], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as FeliCaPollingResponsePigeon; } Future> feliCaRequestService({ required String handle, required List nodeCodeList, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestService$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, nodeCodeList], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return (pigeonVar_replyValue! as List).cast(); } Future feliCaRequestResponse({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestResponse$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as int; } Future feliCaReadWithoutEncryption({ required String handle, required List serviceCodeList, required List blockList, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaReadWithoutEncryption$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, serviceCodeList, blockList], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as FeliCaReadWithoutEncryptionResponsePigeon; } Future feliCaWriteWithoutEncryption({ required String handle, required List serviceCodeList, required List blockList, required List blockData, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaWriteWithoutEncryption$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, serviceCodeList, blockList, blockData], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as FeliCaStatusFlagPigeon; } Future> feliCaRequestSystemCode({ required String handle, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestSystemCode$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return (pigeonVar_replyValue! as List).cast(); } Future feliCaRequestServiceV2({ required String handle, required List nodeCodeList, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestServiceV2$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, nodeCodeList], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as FeliCaRequestServiceV2ResponsePigeon; } Future feliCaRequestSpecificationVersion({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaRequestSpecificationVersion$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as FeliCaRequestSpecificationVersionResponsePigeon; } Future feliCaResetMode({ required String handle, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaResetMode$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as FeliCaStatusFlagPigeon; } Future feliCaSendFeliCaCommand({ required String handle, required Uint8List commandPacket, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.feliCaSendFeliCaCommand$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, commandPacket], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future miFareSendMiFareCommand({ required String handle, required Uint8List commandPacket, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.miFareSendMiFareCommand$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, commandPacket], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future miFareSendMiFareISO7816Command({ required String handle, required Iso7816ApduPigeon apdu, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.miFareSendMiFareISO7816Command$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, apdu], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Iso7816ResponseApduPigeon; } Future miFareSendMiFareISO7816CommandRaw({ required String handle, required Uint8List data, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.miFareSendMiFareISO7816CommandRaw$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, data], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Iso7816ResponseApduPigeon; } Future iso7816SendCommand({ required String handle, required Iso7816ApduPigeon apdu, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso7816SendCommand$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, apdu], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Iso7816ResponseApduPigeon; } Future iso7816SendCommandRaw({ required String handle, required Uint8List data, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso7816SendCommandRaw$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, data], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Iso7816ResponseApduPigeon; } Future iso15693StayQuiet({required String handle}) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693StayQuiet$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future iso15693ReadSingleBlock({ required String handle, required List requestFlags, required int blockNumber, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693ReadSingleBlock$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags, blockNumber], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } Future iso15693WriteSingleBlock({ required String handle, required List requestFlags, required int blockNumber, required Uint8List dataBlock, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693WriteSingleBlock$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags, blockNumber, dataBlock], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future iso15693LockBlock({ required String handle, required List requestFlags, required int blockNumber, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693LockBlock$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags, blockNumber], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future> iso15693ReadMultipleBlocks({ required String handle, required List requestFlags, required int blockNumber, required int numberOfBlocks, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693ReadMultipleBlocks$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags, blockNumber, numberOfBlocks], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return (pigeonVar_replyValue! as List).cast(); } Future iso15693WriteMultipleBlocks({ required String handle, required List requestFlags, required int blockNumber, required int numberOfBlocks, required List dataBlocks, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693WriteMultipleBlocks$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags, blockNumber, numberOfBlocks, dataBlocks], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future iso15693Select({ required String handle, required List requestFlags, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693Select$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future iso15693ResetToReady({ required String handle, required List requestFlags, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693ResetToReady$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future iso15693WriteAfi({ required String handle, required List requestFlags, required int afi, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693WriteAfi$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags, afi], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future iso15693LockAfi({ required String handle, required List requestFlags, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693LockAfi$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future iso15693WriteDsfId({ required String handle, required List requestFlags, required int dsfId, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693WriteDsfId$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags, dsfId], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future iso15693LockDsfId({ required String handle, required List requestFlags, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693LockDsfId$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: true, ); } Future iso15693GetSystemInfo({ required String handle, required List requestFlags, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693GetSystemInfo$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Iso15693SystemInfoPigeon; } Future> iso15693GetMultipleBlockSecurityStatus({ required String handle, required List requestFlags, required int blockNumber, required int numberOfBlocks, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693GetMultipleBlockSecurityStatus$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [handle, requestFlags, blockNumber, numberOfBlocks], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return (pigeonVar_replyValue! as List).cast(); } Future iso15693CustomCommand({ required String handle, required List requestFlags, required int customCommandCode, required Uint8List customRequestParameters, }) async { final pigeonVar_channelName = 'dev.flutter.pigeon.nfc_manager.HostApiPigeon.iso15693CustomCommand$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( [ handle, requestFlags, customCommandCode, customRequestParameters, ], ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, ); return pigeonVar_replyValue! as Uint8List; } } ================================================ FILE: lib/src/nfc_manager_ios/tags/felica.dart ================================================ import 'package:flutter/foundation.dart'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.g.dart'; /// Provides access to FeliCa operations for iOS. /// /// Acquire an instance using [from(NfcTag)]. final class FeliCaIos { const FeliCaIos._( this._handle, { required this.currentSystemCode, required this.currentIDm, }); final String _handle; // DOC: final Uint8List currentSystemCode; // DOC: final Uint8List currentIDm; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static FeliCaIos? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.feliCa; if (data == null || tech == null) return null; return FeliCaIos._( data.handle, currentSystemCode: tech.currentSystemCode, currentIDm: tech.currentIDm, ); } // DOC: Future polling({ required Uint8List systemCode, required FeliCaPollingRequestCodeIos requestCode, required FeliCaPollingTimeSlotIos timeSlot, }) { return hostApi .feliCaPolling( handle: _handle, systemCode: systemCode, requestCode: FeliCaPollingRequestCodePigeon.values.byName( requestCode.name, ), timeSlot: FeliCaPollingTimeSlotPigeon.values.byName(timeSlot.name), ) .then( (value) => FeliCaPollingResponseIos( manufacturerParameter: value.manufacturerParameter, requestData: value.requestData, ), ); } // DOC: Future> requestService({ required List nodeCodeList, }) { return hostApi .feliCaRequestService(handle: _handle, nodeCodeList: nodeCodeList) .then((value) => List.from(value)); } // DOC: Future requestResponse() { return hostApi.feliCaRequestResponse(handle: _handle); } // DOC: Future readWithoutEncryption({ required List serviceCodeList, required List blockList, }) { return hostApi .feliCaReadWithoutEncryption( handle: _handle, serviceCodeList: serviceCodeList, blockList: blockList, ) .then( (value) => FeliCaReadWithoutEncryptionResponseIos( statusFlag1: value.statusFlag1, statusFlag2: value.statusFlag2, blockData: List.from(value.blockData), ), ); } // DOC: Future writeWithoutEncryption({ required List serviceCodeList, required List blockList, required List blockData, }) { return hostApi .feliCaWriteWithoutEncryption( handle: _handle, serviceCodeList: serviceCodeList, blockList: blockList, blockData: blockData, ) .then( (value) => FeliCaStatusFlagIos( statusFlag1: value.statusFlag1, statusFlag2: value.statusFlag2, ), ); } // DOC: Future> requestSystemCode() { return hostApi .feliCaRequestSystemCode(handle: _handle) .then((value) => List.from(value)); } // DOC: Future requestServiceV2({ required List nodeCodeList, }) { return hostApi .feliCaRequestServiceV2(handle: _handle, nodeCodeList: nodeCodeList) .then( (value) => FeliCaRequestServiceV2ResponseIos( statusFlag1: value.statusFlag1, statusFlag2: value.statusFlag2, encryptionIdentifier: value.encryptionIdentifier, nodeKeyVersionListAes: value.nodeKeyVersionListAES != null ? List.from(value.nodeKeyVersionListAES!) : null, nodeKeyVersionListDes: value.nodeKeyVersionListDES != null ? List.from(value.nodeKeyVersionListDES!) : null, ), ); } // DOC: Future requestSpecificationVersion() { return hostApi .feliCaRequestSpecificationVersion(handle: _handle) .then( (value) => FeliCaRequestSpecificationVersionResponseIos( statusFlag1: value.statusFlag1, statusFlag2: value.statusFlag2, basicVersion: value.basicVersion, optionVersion: value.optionVersion, ), ); } // DOC: Future resetMode() { return hostApi .feliCaResetMode(handle: _handle) .then( (value) => FeliCaStatusFlagIos( statusFlag1: value.statusFlag1, statusFlag2: value.statusFlag2, ), ); } // DOC: Future sendFeliCaCommand({required Uint8List commandPacket}) { return hostApi.feliCaSendFeliCaCommand( handle: _handle, commandPacket: commandPacket, ); } } // DOC: final class FeliCaPollingResponseIos { // DOC: @visibleForTesting const FeliCaPollingResponseIos({ required this.manufacturerParameter, required this.requestData, }); // DOC: final Uint8List manufacturerParameter; // DOC: final Uint8List? requestData; } // DOC: final class FeliCaStatusFlagIos { // DOC: @visibleForTesting const FeliCaStatusFlagIos({ required this.statusFlag1, required this.statusFlag2, }); // DOC: final int statusFlag1; // DOC: final int statusFlag2; } // DOC: final class FeliCaReadWithoutEncryptionResponseIos { // DOC: @visibleForTesting const FeliCaReadWithoutEncryptionResponseIos({ required this.statusFlag1, required this.statusFlag2, required this.blockData, }); // DOC: final int statusFlag1; // DOC: final int statusFlag2; // DOC: final List blockData; } // DOC: final class FeliCaRequestServiceV2ResponseIos { // DOC: @visibleForTesting const FeliCaRequestServiceV2ResponseIos({ required this.statusFlag1, required this.statusFlag2, required this.encryptionIdentifier, required this.nodeKeyVersionListAes, required this.nodeKeyVersionListDes, }); // DOC: final int statusFlag1; // DOC: final int statusFlag2; // DOC: final int encryptionIdentifier; // DOC: final List? nodeKeyVersionListAes; // DOC: final List? nodeKeyVersionListDes; } // DOC: final class FeliCaRequestSpecificationVersionResponseIos { // DOC: @visibleForTesting const FeliCaRequestSpecificationVersionResponseIos({ required this.statusFlag1, required this.statusFlag2, required this.basicVersion, required this.optionVersion, }); // DOC: final int statusFlag1; // DOC: final int statusFlag2; // DOC: final Uint8List? basicVersion; // DOC: final Uint8List? optionVersion; } // DOC: enum FeliCaPollingRequestCodeIos { // DOC: noRequest, // DOC: systemCode, // DOC: communicationPerformance, } // DOC: enum FeliCaPollingTimeSlotIos { // DOC: max1, // DOC: max2, // DOC: max4, // DOC: max8, // DOC: max16, } ================================================ FILE: lib/src/nfc_manager_ios/tags/iso15693.dart ================================================ import 'package:flutter/foundation.dart'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.g.dart'; /// Provides access to ISO 15693 operations for iOS. /// /// Acquire an instance using [from(NfcTag)]. final class Iso15693Ios { const Iso15693Ios._( this._handle, { required this.identifier, required this.icManufacturerCode, required this.icSerialNumber, }); final String _handle; // DOC: final Uint8List identifier; // DOC: final int icManufacturerCode; // DOC: final Uint8List icSerialNumber; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static Iso15693Ios? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.iso15693; if (data == null || tech == null) return null; return Iso15693Ios._( data.handle, identifier: tech.identifier, icManufacturerCode: tech.icManufacturerCode, icSerialNumber: tech.icSerialNumber, ); } // DOC: Future stayQuiet() { return hostApi.iso15693StayQuiet(handle: _handle); } // DOC: Future readSingleBlock({ required Set requestFlags, required int blockNumber, }) { return hostApi.iso15693ReadSingleBlock( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), blockNumber: blockNumber, ); } // DOC: Future writeSingleBlock({ required Set requestFlags, required int blockNumber, required Uint8List dataBlock, }) { return hostApi.iso15693WriteSingleBlock( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), blockNumber: blockNumber, dataBlock: dataBlock, ); } // DOC: Future lockBlock({ required Set requestFlags, required int blockNumber, }) { return hostApi.iso15693LockBlock( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), blockNumber: blockNumber, ); } // DOC: Future> readMultipleBlocks({ required Set requestFlags, required int blockNumber, required int numberOfBlocks, }) { return hostApi .iso15693ReadMultipleBlocks( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), blockNumber: blockNumber, numberOfBlocks: numberOfBlocks, ) .then((value) => List.from(value)); } // DOC: Future writeMultipleBlocks({ required Set requestFlags, required int blockNumber, required int numberOfBlocks, required List dataBlocks, }) { return hostApi.iso15693WriteMultipleBlocks( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), blockNumber: blockNumber, numberOfBlocks: numberOfBlocks, dataBlocks: dataBlocks, ); } // DOC: Future select({required Set requestFlags}) { return hostApi.iso15693Select( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), ); } // DOC: Future resetToReady({ required Set requestFlags, }) { return hostApi.iso15693ResetToReady( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), ); } // DOC: Future writeAfi({ required Set requestFlags, required int afi, }) { return hostApi.iso15693WriteAfi( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), afi: afi, ); } // DOC: Future lockAfi({required Set requestFlags}) { return hostApi.iso15693LockAfi( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), ); } // DOC: Future writeDsfId({ required Set requestFlags, required int dsfId, }) { return hostApi.iso15693WriteDsfId( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), dsfId: dsfId, ); } // DOC: Future lockDsfId({required Set requestFlags}) { return hostApi.iso15693LockDsfId( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), ); } // DOC: Future getSystemInfo({ required Set requestFlags, }) { return hostApi .iso15693GetSystemInfo( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), ) .then( (value) => Iso15693SystemInfoIos( applicationFamilyIdentifier: value.applicationFamilyIdentifier, blockSize: value.blockSize, dataStorageFormatIdentifier: value.dataStorageFormatIdentifier, icReference: value.icReference, totalBlocks: value.totalBlocks, ), ); } // DOC: Future> getMultipleBlockSecurityStatus({ required Set requestFlags, required int blockNumber, required int numberOfBlocks, }) { return hostApi .iso15693GetMultipleBlockSecurityStatus( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), blockNumber: blockNumber, numberOfBlocks: numberOfBlocks, ) .then((value) => List.from(value)); } // DOC: Future customCommand({ required Set requestFlags, required int customCommandCode, required Uint8List customRequestParameters, }) { return hostApi.iso15693CustomCommand( handle: _handle, requestFlags: requestFlags .map((e) => Iso15693RequestFlagPigeon.values.byName(e.name)) .toList(), customCommandCode: customCommandCode, customRequestParameters: customRequestParameters, ); } } // DOC: // TODO: Add [NFCISO15693SystemInfo.uniqueIdentifier](https://developer.apple.com/documentation/corenfc/nfciso15693systeminfo/3585154-uniqueidentifier). This can be now used with iOS 14.0 or later. final class Iso15693SystemInfoIos { // DOC: @visibleForTesting const Iso15693SystemInfoIos({ required this.applicationFamilyIdentifier, required this.blockSize, required this.dataStorageFormatIdentifier, required this.icReference, required this.totalBlocks, }); // DOC: final int applicationFamilyIdentifier; // DOC: final int blockSize; // DOC: final int dataStorageFormatIdentifier; // DOC: final int icReference; // DOC: final int totalBlocks; } // DOC: // TODO: Add [NFCISO15693RequestFlag.commandSpecificBit8](https://developer.apple.com/documentation/corenfc/nfciso15693requestflag/3551911-commandspecificbit8). This can be now used with iOS 14.0 or later. enum Iso15693RequestFlagIos { // DOC: address, // DOC: dualSubCarriers, // DOC: highDataRate, // DOC: option, // DOC: protocolExtension, // DOC: select, } ================================================ FILE: lib/src/nfc_manager_ios/tags/iso7816.dart ================================================ import 'package:flutter/foundation.dart'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.g.dart'; /// Provides access to ISO 7816 operations for iOS. /// /// Acquire an instance using [from(NfcTag)]. final class Iso7816Ios { const Iso7816Ios._( this._handle, { required this.initialSelectedAID, required this.identifier, required this.historicalBytes, required this.applicationData, required this.proprietaryApplicationDataCoding, }); final String _handle; // DOC: final String initialSelectedAID; // DOC: final Uint8List identifier; // DOC: final Uint8List? historicalBytes; // DOC: final Uint8List? applicationData; // DOC: final bool proprietaryApplicationDataCoding; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static Iso7816Ios? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.iso7816; if (data == null || tech == null) return null; return Iso7816Ios._( data.handle, initialSelectedAID: tech.initialSelectedAID, identifier: tech.identifier, historicalBytes: tech.historicalBytes, applicationData: tech.applicationData, proprietaryApplicationDataCoding: tech.proprietaryApplicationDataCoding, ); } // DOC: Future sendCommand({ required int instructionClass, required int instructionCode, required int p1Parameter, required int p2Parameter, required Uint8List data, required int expectedResponseLength, }) { return hostApi .iso7816SendCommand( handle: _handle, apdu: Iso7816ApduPigeon( instructionClass: instructionClass, instructionCode: instructionCode, p1Parameter: p1Parameter, p2Parameter: p2Parameter, data: data, expectedResponseLength: expectedResponseLength, ), ) .then( (value) => Iso7816ResponseApduIos( payload: value.payload, statusWord1: value.statusWord1, statusWord2: value.statusWord2, ), ); } // DOC: Future sendCommandRaw({required Uint8List data}) { return hostApi .iso7816SendCommandRaw(handle: _handle, data: data) .then( (value) => Iso7816ResponseApduIos( payload: value.payload, statusWord1: value.statusWord1, statusWord2: value.statusWord2, ), ); } } // DOC: final class Iso7816ResponseApduIos { // DOC: @visibleForTesting const Iso7816ResponseApduIos({ required this.payload, required this.statusWord1, required this.statusWord2, }); // DOC: final Uint8List payload; // DOC: final int statusWord1; // DOC: final int statusWord2; } ================================================ FILE: lib/src/nfc_manager_ios/tags/mifare.dart ================================================ import 'package:flutter/foundation.dart'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.g.dart'; import 'package:nfc_manager/src/nfc_manager_ios/tags/iso7816.dart'; /// Provides access to MiFare operations for iOS. /// /// Acquire an instance using [from(NfcTag)]. final class MiFareIos { const MiFareIos._( this._handle, { required this.identifier, required this.mifareFamily, required this.historicalBytes, }); final String _handle; // DOC: final Uint8List identifier; // DOC: final MiFareFamilyIos mifareFamily; // DOC: final Uint8List? historicalBytes; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static MiFareIos? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.miFare; if (data == null || tech == null) return null; return MiFareIos._( data.handle, identifier: tech.identifier, mifareFamily: MiFareFamilyIos.values.byName(tech.mifareFamily.name), historicalBytes: tech.historicalBytes, ); } // DOC: Future sendMiFareCommand({required Uint8List commandPacket}) { return hostApi.miFareSendMiFareCommand( handle: _handle, commandPacket: commandPacket, ); } // DOC: Future sendMiFareIso7816Command({ required int instructionClass, required int instructionCode, required int p1Parameter, required int p2Parameter, required Uint8List data, required int expectedResponseLength, }) { return hostApi .miFareSendMiFareISO7816Command( handle: _handle, apdu: Iso7816ApduPigeon( instructionClass: instructionClass, instructionCode: instructionCode, p1Parameter: p1Parameter, p2Parameter: p2Parameter, data: data, expectedResponseLength: expectedResponseLength, ), ) .then( // ignore: invalid_use_of_visible_for_testing_member (value) => Iso7816ResponseApduIos( payload: value.payload, statusWord1: value.statusWord1, statusWord2: value.statusWord2, ), ); } // DOC: Future sendMiFareIso7816CommandRaw({ required Uint8List data, }) { return hostApi .miFareSendMiFareISO7816CommandRaw(handle: _handle, data: data) .then( // ignore: invalid_use_of_visible_for_testing_member (value) => Iso7816ResponseApduIos( payload: value.payload, statusWord1: value.statusWord1, statusWord2: value.statusWord2, ), ); } } // DOC: enum MiFareFamilyIos { // DOC: unknown, // DOC: ultralight, // DOC: plus, // DOC: desfire, } ================================================ FILE: lib/src/nfc_manager_ios/tags/ndef.dart ================================================ import 'package:flutter/foundation.dart'; import 'package:ndef_record/ndef_record.dart'; import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.dart'; import 'package:nfc_manager/src/nfc_manager_ios/pigeon.g.dart'; /// Provides access to NDEF operations for iOS. /// /// Acquire an instance using [from(NfcTag)]. final class NdefIos { const NdefIos._( this._handle, { required this.status, required this.capacity, required this.cachedNdefMessage, }); final String _handle; // DOC: final NdefStatusIos status; // DOC: final int capacity; // DOC: final NdefMessage? cachedNdefMessage; /// Creates an instance of this class for the given tag. /// /// Returns null if the tag is not compatible. static NdefIos? from(NfcTag tag) { // ignore: invalid_use_of_protected_member final data = tag.data as TagPigeon?; final tech = data?.ndef; if (data == null || tech == null) return null; return NdefIos._( data.handle, status: NdefStatusIos.values.byName(tech.status.name), capacity: tech.capacity, cachedNdefMessage: tech.cachedNdefMessage == null ? null : NdefMessage( records: tech.cachedNdefMessage!.records .map( (r) => NdefRecord( typeNameFormat: TypeNameFormat.values.byName( r.typeNameFormat.name, ), type: r.type, identifier: r.identifier, payload: r.payload, ), ) .toList(), ), ); } // DOC: Future queryNdefStatus() { return hostApi .ndefQueryNdefStatus(handle: _handle) .then( (value) => QueryNdefStatusResponseIos( status: NdefStatusIos.values.byName(value.status.name), capacity: value.capacity, ), ); } // DOC: Future readNdef() { return hostApi .ndefReadNdef(handle: _handle) .then( (value) => value == null ? null : NdefMessage( records: value.records .map( (r) => NdefRecord( typeNameFormat: TypeNameFormat.values.byName( r.typeNameFormat.name, ), type: r.type, identifier: r.identifier, payload: r.payload, ), ) .toList(), ), ); } // DOC: Future writeNdef(NdefMessage message) { return hostApi.ndefWriteNdef( handle: _handle, message: NdefMessagePigeon( records: message.records .map( (e) => NdefPayloadPigeon( typeNameFormat: TypeNameFormatPigeon.values.byName( e.typeNameFormat.name, ), type: e.type, identifier: e.identifier, payload: e.payload, ), ) .toList(), ), ); } // DOC: Future writeLock() { return hostApi.ndefWriteLock(handle: _handle); } } // DOC: final class QueryNdefStatusResponseIos { // DOC: @visibleForTesting const QueryNdefStatusResponseIos({ required this.status, required this.capacity, }); // DOC: final NdefStatusIos status; // DOC: final int capacity; } // DOC: enum NdefStatusIos { // DOC: notSupported, // DOC: readOnly, // DOC: readWrite, } ================================================ FILE: pigeon/android.dart ================================================ import 'package:pigeon/pigeon.dart'; @ConfigurePigeon( PigeonOptions( dartPackageName: 'nfc_manager', dartOut: 'lib/src/nfc_manager_android/pigeon.g.dart', kotlinOut: 'android/src/main/kotlin/dev/flutter/plugins/nfcmanager/Pigeon.kt', kotlinOptions: KotlinOptions(package: 'dev.flutter.plugins.nfcmanager'), ), ) @FlutterApi() abstract class FlutterApiPigeon { void onTagDiscovered(TagPigeon tag); void onAdapterStateChanged(AdapterStatePigeon state); } @HostApi() abstract class HostApiPigeon { bool nfcAdapterIsEnabled(); bool nfcAdapterIsSecureNfcEnabled(); bool nfcAdapterIsSecureNfcSupported(); void nfcAdapterEnableReaderMode({required List flags}); void nfcAdapterDisableReaderMode(); NdefMessagePigeon? ndefGetNdefMessage({required String handle}); void ndefWriteNdefMessage({required String handle, required NdefMessagePigeon message}); bool ndefMakeReadOnly({required String handle}); int nfcAGetMaxTransceiveLength({required String handle}); int nfcAGetTimeout({required String handle}); void nfcASetTimeout({required String handle, required int timeout}); Uint8List nfcATransceive({required String handle, required Uint8List bytes}); int nfcBGetMaxTransceiveLength({required String handle}); Uint8List nfcBTransceive({required String handle, required Uint8List bytes}); int nfcFGetMaxTransceiveLength({required String handle}); int nfcFGetTimeout({required String handle}); void nfcFSetTimeout({required String handle, required int timeout}); Uint8List nfcFTransceive({required String handle, required Uint8List bytes}); int nfcVGetMaxTransceiveLength({required String handle}); Uint8List nfcVTransceive({required String handle, required Uint8List bytes}); int isoDepGetMaxTransceiveLength({required String handle}); int isoDepGetTimeout({required String handle}); void isoDepSetTimeout({required String handle, required int timeout}); Uint8List isoDepTransceive({required String handle, required Uint8List bytes}); int mifareClassicGetMaxTransceiveLength({required String handle}); int mifareClassicGetTimeout({required String handle}); void mifareClassicSetTimeout({required String handle, required int timeout}); int mifareClassicBlockToSector({required String handle, required int blockIndex}); int mifareClassicGetBlockCountInSector({required String handle, required int sectorIndex}); int mifareClassicSectorToBlock({required String handle, required int sectorIndex}); bool mifareClassicAuthenticateSectorWithKeyA({required String handle, required int sectorIndex, required Uint8List key}); bool mifareClassicAuthenticateSectorWithKeyB({required String handle, required int sectorIndex, required Uint8List key}); void mifareClassicIncrement({required String handle, required int blockIndex, required int value}); void mifareClassicDecrement({required String handle, required int blockIndex, required int value}); Uint8List mifareClassicReadBlock({required String handle, required int blockIndex}); void mifareClassicWriteBlock({required String handle, required int blockIndex, required Uint8List data}); void mifareClassicRestore({required String handle, required int blockIndex}); void mifareClassicTransfer({required String handle, required int blockIndex}); Uint8List mifareClassicTransceive({required String handle, required Uint8List bytes}); int mifareUltralightGetMaxTransceiveLength({required String handle}); int mifareUltralightGetTimeout({required String handle}); void mifareUltralightSetTimeout({required String handle, required int timeout}); Uint8List mifareUltralightReadPages({required String handle, required int pageOffset}); void mifareUltralightWritePage({required String handle, required int pageOffset, required Uint8List data}); Uint8List mifareUltralightTransceive({required String handle, required Uint8List bytes}); void ndefFormatableFormat({required String handle, required NdefMessagePigeon firstMessage}); void ndefFormatableFormatReadOnly({required String handle, required NdefMessagePigeon firstMessage}); } class TagPigeon { const TagPigeon({ required this.handle, required this.id, required this.techList, required this.ndef, required this.nfcA, required this.nfcB, required this.nfcF, required this.nfcV, required this.isoDep, required this.mifareClassic, required this.mifareUltralight, required this.ndefFormatable, required this.nfcBarcode, }); final String handle; final Uint8List id; final List techList; final NdefPigeon? ndef; final NfcAPigeon? nfcA; final NfcBPigeon? nfcB; final NfcFPigeon? nfcF; final NfcVPigeon? nfcV; final IsoDepPigeon? isoDep; final MifareClassicPigeon? mifareClassic; final MifareUltralightPigeon? mifareUltralight; final String? ndefFormatable; final NfcBarcodePigeon? nfcBarcode; } class NdefPigeon { const NdefPigeon({ required this.type, required this.canMakeReadOnly, required this.isWritable, required this.maxSize, required this.cachedNdefMessage, }); final String type; final bool canMakeReadOnly; final bool isWritable; final int maxSize; final NdefMessagePigeon? cachedNdefMessage; } class NfcAPigeon { const NfcAPigeon({ required this.atqa, required this.sak, }); final Uint8List atqa; final int sak; } class NfcBPigeon { const NfcBPigeon({ required this.applicationData, required this.protocolInfo, }); final Uint8List applicationData; final Uint8List protocolInfo; } class NfcFPigeon { const NfcFPigeon({ required this.manufacturer, required this.systemCode, }); final Uint8List manufacturer; final Uint8List systemCode; } class NfcVPigeon { const NfcVPigeon({ required this.dsfId, required this.responseFlags, }); final int dsfId; final int responseFlags; } class IsoDepPigeon { IsoDepPigeon({ required this.hiLayerResponse, required this.historicalBytes, required this.isExtendedLengthApduSupported, }); final Uint8List? hiLayerResponse; final Uint8List? historicalBytes; final bool isExtendedLengthApduSupported; } class MifareClassicPigeon { const MifareClassicPigeon({ required this.type, required this.blockCount, required this.sectorCount, required this.size, }); final MifareClassicTypePigeon type; final int blockCount; final int sectorCount; final int size; } class MifareUltralightPigeon { const MifareUltralightPigeon({ required this.type, }); final MifareUltralightTypePigeon type; } class NfcBarcodePigeon { const NfcBarcodePigeon({ required this.type, required this.barcode, }); final NfcBarcodeTypePigeon type; final Uint8List barcode; } class NdefMessagePigeon { const NdefMessagePigeon({ required this.records, }); final List records; } class NdefRecordPigeon { const NdefRecordPigeon({ required this.tnf, required this.type, required this.id, required this.payload, }); final TypeNameFormatPigeon tnf; final Uint8List type; final Uint8List id; final Uint8List payload; } enum ReaderFlagPigeon { nfcA, nfcB, nfcBarcode, nfcF, nfcV, noPlatformSounds, skipNdefCheck, } enum AdapterStatePigeon { off, turningOn, on, turningOff, } enum TypeNameFormatPigeon { empty, wellKnown, media, absoluteUri, external, unknown, unchanged, } enum NfcBarcodeTypePigeon { kovio, unknown, } enum MifareClassicTypePigeon { classic, plus, pro, unknown, } enum MifareUltralightTypePigeon { ultralight, ultralightC, unknown, } ================================================ FILE: pigeon/ios.dart ================================================ import 'package:pigeon/pigeon.dart'; @ConfigurePigeon( PigeonOptions( dartPackageName: 'nfc_manager', dartOut: 'lib/src/nfc_manager_ios/pigeon.g.dart', swiftOut: 'ios/nfc_manager/Sources/nfc_manager/Pigeon.swift', ), ) @FlutterApi() abstract class FlutterApiPigeon { void tagSessionDidBecomeActive(); void tagSessionDidDetect(TagPigeon tag); void tagSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error); void vasSessionDidBecomeActive(); void vasSessionDidReceive(List responses); void vasSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error); } @HostApi() abstract class HostApiPigeon { bool tagSessionReadingAvailable(); void tagSessionBegin({required List pollingOptions, required String? alertMessage, required bool invalidateAfterFirstRead}); void tagSessionInvalidate({required String? alertMessage, required String? errorMessage}); void tagSessionRestartPolling(); void tagSessionSetAlertMessage({required String alertMessage}); bool vasSessionReadingAvailable(); void vasSessionBegin({required List configurations, required String? alertMessage}); void vasSessionInvalidate({required String? alertMessage, required String? errorMessage}); void vasSessionSetAlertMessage({required String alertMessage}); @async NdefQueryStatusPigeon ndefQueryNdefStatus({required String handle}); @async NdefMessagePigeon? ndefReadNdef({required String handle}); @async void ndefWriteNdef({required String handle, required NdefMessagePigeon message}); @async void ndefWriteLock({required String handle}); @async FeliCaPollingResponsePigeon feliCaPolling({required String handle, required Uint8List systemCode, required FeliCaPollingRequestCodePigeon requestCode, required FeliCaPollingTimeSlotPigeon timeSlot}); @async List feliCaRequestService({required String handle, required List nodeCodeList}); @async int feliCaRequestResponse({required String handle}); @async FeliCaReadWithoutEncryptionResponsePigeon feliCaReadWithoutEncryption({required String handle, required List serviceCodeList, required List blockList}); @async FeliCaStatusFlagPigeon feliCaWriteWithoutEncryption({required String handle, required List serviceCodeList, required List blockList, required List blockData}); @async List feliCaRequestSystemCode({required String handle}); @async FeliCaRequestServiceV2ResponsePigeon feliCaRequestServiceV2({required String handle, required List nodeCodeList}); @async FeliCaRequestSpecificationVersionResponsePigeon feliCaRequestSpecificationVersion({required String handle}); @async FeliCaStatusFlagPigeon feliCaResetMode({required String handle}); @async Uint8List feliCaSendFeliCaCommand({required String handle, required Uint8List commandPacket}); @async Uint8List miFareSendMiFareCommand({required String handle, required Uint8List commandPacket}); @async Iso7816ResponseApduPigeon miFareSendMiFareISO7816Command({required String handle, required Iso7816ApduPigeon apdu}); @async Iso7816ResponseApduPigeon miFareSendMiFareISO7816CommandRaw({required String handle, required Uint8List data}); @async Iso7816ResponseApduPigeon iso7816SendCommand({required String handle, required Iso7816ApduPigeon apdu}); @async Iso7816ResponseApduPigeon iso7816SendCommandRaw({required String handle, required Uint8List data}); @async void iso15693StayQuiet({required String handle}); @async Uint8List iso15693ReadSingleBlock({required String handle, required List requestFlags, required int blockNumber}); @async void iso15693WriteSingleBlock({required String handle, required List requestFlags, required int blockNumber, required Uint8List dataBlock}); @async void iso15693LockBlock({required String handle, required List requestFlags, required int blockNumber}); @async List iso15693ReadMultipleBlocks({required String handle, required List requestFlags, required int blockNumber, required int numberOfBlocks}); @async void iso15693WriteMultipleBlocks({required String handle, required List requestFlags, required int blockNumber, required int numberOfBlocks, required List dataBlocks}); @async void iso15693Select({required String handle, required List requestFlags}); @async void iso15693ResetToReady({required String handle, required List requestFlags}); @async void iso15693WriteAfi({required String handle, required List requestFlags, required int afi}); @async void iso15693LockAfi({required String handle, required List requestFlags}); @async void iso15693WriteDsfId({required String handle, required List requestFlags, required int dsfId}); @async void iso15693LockDsfId({required String handle, required List requestFlags}); @async Iso15693SystemInfoPigeon iso15693GetSystemInfo({required String handle, required List requestFlags}); @async List iso15693GetMultipleBlockSecurityStatus({required String handle, required List requestFlags, required int blockNumber, required int numberOfBlocks}); @async Uint8List iso15693CustomCommand({required String handle, required List requestFlags, required int customCommandCode, required Uint8List customRequestParameters}); } class TagPigeon { const TagPigeon({ required this.handle, required this.ndef, required this.feliCa, required this.iso15693, required this.iso7816, required this.miFare, }); final String handle; final NdefPigeon? ndef; final FeliCaPigeon? feliCa; final Iso15693Pigeon? iso15693; final Iso7816Pigeon? iso7816; final MiFarePigeon? miFare; } class NdefPigeon { const NdefPigeon({ required this.status, required this.capacity, required this.cachedNdefMessage, }); final NdefStatusPigeon status; final int capacity; final NdefMessagePigeon? cachedNdefMessage; } class FeliCaPigeon { const FeliCaPigeon({ required this.currentSystemCode, required this.currentIDm, }); final Uint8List currentSystemCode; final Uint8List currentIDm; } class Iso15693Pigeon { const Iso15693Pigeon({ required this.icManufacturerCode, required this.icSerialNumber, required this.identifier, }); final int icManufacturerCode; final Uint8List icSerialNumber; final Uint8List identifier; } class Iso7816Pigeon { const Iso7816Pigeon({ required this.initialSelectedAID, required this.identifier, required this.historicalBytes, required this.applicationData, required this.proprietaryApplicationDataCoding, }); final String initialSelectedAID; final Uint8List identifier; final Uint8List? historicalBytes; final Uint8List? applicationData; final bool proprietaryApplicationDataCoding; } class MiFarePigeon { const MiFarePigeon({ required this.mifareFamily, required this.identifier, required this.historicalBytes, }); final MiFareFamilyPigeon mifareFamily; final Uint8List identifier; final Uint8List? historicalBytes; } class NdefQueryStatusPigeon { const NdefQueryStatusPigeon({ required this.status, required this.capacity, }); final NdefStatusPigeon status; final int capacity; } class NdefMessagePigeon { const NdefMessagePigeon({ required this.records, }); final List records; } class NdefPayloadPigeon { const NdefPayloadPigeon({ required this.typeNameFormat, required this.type, required this.identifier, required this.payload, }); final TypeNameFormatPigeon typeNameFormat; final Uint8List type; final Uint8List identifier; final Uint8List payload; } class FeliCaPollingResponsePigeon { const FeliCaPollingResponsePigeon({ required this.manufacturerParameter, required this.requestData, }); final Uint8List manufacturerParameter; final Uint8List? requestData; } class FeliCaReadWithoutEncryptionResponsePigeon { const FeliCaReadWithoutEncryptionResponsePigeon({ required this.statusFlag1, required this.statusFlag2, required this.blockData, }); final int statusFlag1; final int statusFlag2; final List blockData; } class FeliCaRequestServiceV2ResponsePigeon { const FeliCaRequestServiceV2ResponsePigeon({ required this.statusFlag1, required this.statusFlag2, required this.encryptionIdentifier, required this.nodeKeyVersionListAES, required this.nodeKeyVersionListDES, }); final int statusFlag1; final int statusFlag2; final int encryptionIdentifier; final List? nodeKeyVersionListAES; final List? nodeKeyVersionListDES; } class FeliCaRequestSpecificationVersionResponsePigeon { const FeliCaRequestSpecificationVersionResponsePigeon({ required this.statusFlag1, required this.statusFlag2, required this.basicVersion, required this.optionVersion, }); final int statusFlag1; final int statusFlag2; final Uint8List? basicVersion; final Uint8List? optionVersion; } class FeliCaStatusFlagPigeon { const FeliCaStatusFlagPigeon({ required this.statusFlag1, required this.statusFlag2, }); final int statusFlag1; final int statusFlag2; } class Iso7816ApduPigeon { const Iso7816ApduPigeon({ required this.instructionClass, required this.instructionCode, required this.p1Parameter, required this.p2Parameter, required this.data, required this.expectedResponseLength, }); final int instructionClass; final int instructionCode; final int p1Parameter; final int p2Parameter; final Uint8List data; final int expectedResponseLength; } class Iso7816ResponseApduPigeon { const Iso7816ResponseApduPigeon({ required this.payload, required this.statusWord1, required this.statusWord2, }); final Uint8List payload; final int statusWord1; final int statusWord2; } class Iso15693SystemInfoPigeon { const Iso15693SystemInfoPigeon({ required this.dataStorageFormatIdentifier, required this.applicationFamilyIdentifier, required this.blockSize, required this.totalBlocks, required this.icReference, }); final int dataStorageFormatIdentifier; final int applicationFamilyIdentifier; final int blockSize; final int totalBlocks; final int icReference; } class NfcReaderSessionErrorPigeon { const NfcReaderSessionErrorPigeon({ required this.code, required this.message, }); final NfcReaderErrorCodePigeon code; final String message; } class NfcVasCommandConfigurationPigeon { const NfcVasCommandConfigurationPigeon({ required this.mode, required this.passIdentifier, required this.url, }); final NfcVasCommandConfigurationModePigeon mode; final String passIdentifier; final String? url; } class NfcVasResponsePigeon { const NfcVasResponsePigeon({ required this.status, required this.vasData, required this.mobileToken, }); final NfcVasResponseErrorCodePigeon status; final Uint8List vasData; final Uint8List mobileToken; } enum PollingOptionPigeon { iso14443, iso15693, iso18092, } enum NdefStatusPigeon { notSupported, readWrite, readOnly, } enum TypeNameFormatPigeon { empty, wellKnown, media, absoluteUri, external, unknown, unchanged, } enum FeliCaPollingRequestCodePigeon { noRequest, systemCode, communicationPerformance, } enum FeliCaPollingTimeSlotPigeon { max1, max2, max4, max8, max16, } enum MiFareFamilyPigeon { unknown, ultralight, plus, desfire, } enum Iso15693RequestFlagPigeon { address, dualSubCarriers, highDataRate, option, protocolExtension, select, } enum NfcVasCommandConfigurationModePigeon { normal, urlOnly, } enum NfcReaderErrorCodePigeon { readerSessionInvalidationErrorFirstNdefTagRead, readerSessionInvalidationErrorSessionTerminatedUnexpectedly, readerSessionInvalidationErrorSessionTimeout, readerSessionInvalidationErrorSystemIsBusy, readerSessionInvalidationErrorUserCanceled, ndefReaderSessionErrorTagNotWritable, ndefReaderSessionErrorTagSizeTooSmall, ndefReaderSessionErrorTagUpdateFailure, ndefReaderSessionErrorZeroLengthMessage, readerTransceiveErrorRetryExceeded, readerTransceiveErrorTagConnectionLost, readerTransceiveErrorTagNotConnected, readerTransceiveErrorTagResponseError, readerTransceiveErrorSessionInvalidated, readerTransceiveErrorPacketTooLong, tagCommandConfigurationErrorInvalidParameters, readerErrorAccessNotAccepted, readerErrorIneligible, readerErrorUnsupportedFeature, readerErrorInvalidParameter, readerErrorInvalidParameterLength, readerErrorParameterOutOfBound, readerErrorRadioDisabled, readerErrorSecurityViolation, } enum NfcVasResponseErrorCodePigeon { success, userIntervention, dataNotActivated, dataNotFound, incorrectData, unsupportedApplicationVersion, wrongLCField, wrongParameters, } ================================================ FILE: pubspec.yaml ================================================ name: nfc_manager description: A Flutter plugin providing access to NFC features on Android and iOS. repository: https://github.com/okadan/flutter-nfc-manager version: 4.2.0 environment: sdk: ^3.11.4 flutter: '>=3.3.0' dependencies: flutter: sdk: flutter meta: ^1.17.0 ndef_record: ^1.4.2 dev_dependencies: flutter_lints: ^6.0.0 pigeon: ^26.3.3 flutter: plugin: platforms: android: package: dev.flutter.plugins.nfcmanager pluginClass: NfcManagerPlugin ios: pluginClass: NfcManagerPlugin