Showing preview only (543K chars total). Download the full file or copy to clipboard to get everything.
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
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="dev.flutter.plugins.nfcmanager">
</manifest>
================================================
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<String, Tag> = 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<ReaderFlagPigeon>) {
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 <reified T: TagTechnology> 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<ReaderFlagPigeon>): 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<Any?> {
return listOf(result)
}
fun wrapError(exception: Throwable): List<Any?> {
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<String>,
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<Any?>): TagPigeon {
val handle = pigeonVar_list[0] as String
val id = pigeonVar_list[1] as ByteArray
val techList = pigeonVar_list[2] as List<String>
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<Any?> {
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<Any?>): 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<Any?> {
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<Any?>): NfcAPigeon {
val atqa = pigeonVar_list[0] as ByteArray
val sak = pigeonVar_list[1] as Long
return NfcAPigeon(atqa, sak)
}
}
fun toList(): List<Any?> {
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<Any?>): NfcBPigeon {
val applicationData = pigeonVar_list[0] as ByteArray
val protocolInfo = pigeonVar_list[1] as ByteArray
return NfcBPigeon(applicationData, protocolInfo)
}
}
fun toList(): List<Any?> {
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<Any?>): NfcFPigeon {
val manufacturer = pigeonVar_list[0] as ByteArray
val systemCode = pigeonVar_list[1] as ByteArray
return NfcFPigeon(manufacturer, systemCode)
}
}
fun toList(): List<Any?> {
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<Any?>): NfcVPigeon {
val dsfId = pigeonVar_list[0] as Long
val responseFlags = pigeonVar_list[1] as Long
return NfcVPigeon(dsfId, responseFlags)
}
}
fun toList(): List<Any?> {
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<Any?>): 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<Any?> {
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<Any?>): 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<Any?> {
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<Any?>): MifareUltralightPigeon {
val type = pigeonVar_list[0] as MifareUltralightTypePigeon
return MifareUltralightPigeon(type)
}
}
fun toList(): List<Any?> {
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<Any?>): NfcBarcodePigeon {
val type = pigeonVar_list[0] as NfcBarcodeTypePigeon
val barcode = pigeonVar_list[1] as ByteArray
return NfcBarcodePigeon(type, barcode)
}
}
fun toList(): List<Any?> {
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<NdefRecordPigeon>
)
{
companion object {
fun fromList(pigeonVar_list: List<Any?>): NdefMessagePigeon {
val records = pigeonVar_list[0] as List<NdefRecordPigeon>
return NdefMessagePigeon(records)
}
}
fun toList(): List<Any?> {
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<Any?>): 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<Any?> {
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<Any?>)?.let {
TagPigeon.fromList(it)
}
}
136.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
NdefPigeon.fromList(it)
}
}
137.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
NfcAPigeon.fromList(it)
}
}
138.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
NfcBPigeon.fromList(it)
}
}
139.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
NfcFPigeon.fromList(it)
}
}
140.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
NfcVPigeon.fromList(it)
}
}
141.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
IsoDepPigeon.fromList(it)
}
}
142.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
MifareClassicPigeon.fromList(it)
}
}
143.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
MifareUltralightPigeon.fromList(it)
}
}
144.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
NfcBarcodePigeon.fromList(it)
}
}
145.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
NdefMessagePigeon.fromList(it)
}
}
146.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.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<Any?> by lazy {
PigeonPigeonCodec()
}
}
fun onTagDiscovered(tagArg: TagPigeon, callback: (Result<Unit>) -> Unit)
{
val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else ""
val channelName = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.onTagDiscovered$separatedMessageChannelSuffix"
val channel = BasicMessageChannel<Any?>(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>) -> Unit)
{
val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else ""
val channelName = "dev.flutter.pigeon.nfc_manager.FlutterApiPigeon.onAdapterStateChanged$separatedMessageChannelSuffix"
val channel = BasicMessageChannel<Any?>(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<ReaderFlagPigeon>)
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<Any?> 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<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterIsEnabled$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
listOf(api.nfcAdapterIsEnabled())
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterIsSecureNfcEnabled$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
listOf(api.nfcAdapterIsSecureNfcEnabled())
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterIsSecureNfcSupported$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
listOf(api.nfcAdapterIsSecureNfcSupported())
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterEnableReaderMode$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val flagsArg = args[0] as List<ReaderFlagPigeon>
val wrapped: List<Any?> = try {
api.nfcAdapterEnableReaderMode(flagsArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAdapterDisableReaderMode$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
api.nfcAdapterDisableReaderMode()
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefGetNdefMessage$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.ndefGetNdefMessage(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefWriteNdefMessage$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val messageArg = args[1] as NdefMessagePigeon
val wrapped: List<Any?> = try {
api.ndefWriteNdefMessage(handleArg, messageArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefMakeReadOnly$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.ndefMakeReadOnly(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAGetMaxTransceiveLength$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.nfcAGetMaxTransceiveLength(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcAGetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.nfcAGetTimeout(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcASetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val timeoutArg = args[1] as Long
val wrapped: List<Any?> = try {
api.nfcASetTimeout(handleArg, timeoutArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcATransceive$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val bytesArg = args[1] as ByteArray
val wrapped: List<Any?> = try {
listOf(api.nfcATransceive(handleArg, bytesArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcBGetMaxTransceiveLength$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.nfcBGetMaxTransceiveLength(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcBTransceive$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val bytesArg = args[1] as ByteArray
val wrapped: List<Any?> = try {
listOf(api.nfcBTransceive(handleArg, bytesArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFGetMaxTransceiveLength$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.nfcFGetMaxTransceiveLength(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFGetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.nfcFGetTimeout(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFSetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val timeoutArg = args[1] as Long
val wrapped: List<Any?> = try {
api.nfcFSetTimeout(handleArg, timeoutArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcFTransceive$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val bytesArg = args[1] as ByteArray
val wrapped: List<Any?> = try {
listOf(api.nfcFTransceive(handleArg, bytesArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcVGetMaxTransceiveLength$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.nfcVGetMaxTransceiveLength(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.nfcVTransceive$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val bytesArg = args[1] as ByteArray
val wrapped: List<Any?> = try {
listOf(api.nfcVTransceive(handleArg, bytesArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepGetMaxTransceiveLength$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.isoDepGetMaxTransceiveLength(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepGetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.isoDepGetTimeout(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepSetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val timeoutArg = args[1] as Long
val wrapped: List<Any?> = try {
api.isoDepSetTimeout(handleArg, timeoutArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.isoDepTransceive$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val bytesArg = args[1] as ByteArray
val wrapped: List<Any?> = try {
listOf(api.isoDepTransceive(handleArg, bytesArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicGetMaxTransceiveLength$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.mifareClassicGetMaxTransceiveLength(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicGetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.mifareClassicGetTimeout(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicSetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val timeoutArg = args[1] as Long
val wrapped: List<Any?> = try {
api.mifareClassicSetTimeout(handleArg, timeoutArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicBlockToSector$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val blockIndexArg = args[1] as Long
val wrapped: List<Any?> = try {
listOf(api.mifareClassicBlockToSector(handleArg, blockIndexArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicGetBlockCountInSector$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val sectorIndexArg = args[1] as Long
val wrapped: List<Any?> = try {
listOf(api.mifareClassicGetBlockCountInSector(handleArg, sectorIndexArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicSectorToBlock$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val sectorIndexArg = args[1] as Long
val wrapped: List<Any?> = try {
listOf(api.mifareClassicSectorToBlock(handleArg, sectorIndexArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicAuthenticateSectorWithKeyA$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val sectorIndexArg = args[1] as Long
val keyArg = args[2] as ByteArray
val wrapped: List<Any?> = try {
listOf(api.mifareClassicAuthenticateSectorWithKeyA(handleArg, sectorIndexArg, keyArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicAuthenticateSectorWithKeyB$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val sectorIndexArg = args[1] as Long
val keyArg = args[2] as ByteArray
val wrapped: List<Any?> = try {
listOf(api.mifareClassicAuthenticateSectorWithKeyB(handleArg, sectorIndexArg, keyArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicIncrement$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val blockIndexArg = args[1] as Long
val valueArg = args[2] as Long
val wrapped: List<Any?> = 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<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicDecrement$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val blockIndexArg = args[1] as Long
val valueArg = args[2] as Long
val wrapped: List<Any?> = 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<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicReadBlock$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val blockIndexArg = args[1] as Long
val wrapped: List<Any?> = try {
listOf(api.mifareClassicReadBlock(handleArg, blockIndexArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicWriteBlock$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val blockIndexArg = args[1] as Long
val dataArg = args[2] as ByteArray
val wrapped: List<Any?> = 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<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicRestore$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val blockIndexArg = args[1] as Long
val wrapped: List<Any?> = try {
api.mifareClassicRestore(handleArg, blockIndexArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicTransfer$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val blockIndexArg = args[1] as Long
val wrapped: List<Any?> = try {
api.mifareClassicTransfer(handleArg, blockIndexArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareClassicTransceive$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val bytesArg = args[1] as ByteArray
val wrapped: List<Any?> = try {
listOf(api.mifareClassicTransceive(handleArg, bytesArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightGetMaxTransceiveLength$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.mifareUltralightGetMaxTransceiveLength(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightGetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val wrapped: List<Any?> = try {
listOf(api.mifareUltralightGetTimeout(handleArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightSetTimeout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val timeoutArg = args[1] as Long
val wrapped: List<Any?> = try {
api.mifareUltralightSetTimeout(handleArg, timeoutArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightReadPages$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val pageOffsetArg = args[1] as Long
val wrapped: List<Any?> = try {
listOf(api.mifareUltralightReadPages(handleArg, pageOffsetArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightWritePage$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val pageOffsetArg = args[1] as Long
val dataArg = args[2] as ByteArray
val wrapped: List<Any?> = 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<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.mifareUltralightTransceive$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val bytesArg = args[1] as ByteArray
val wrapped: List<Any?> = try {
listOf(api.mifareUltralightTransceive(handleArg, bytesArg))
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefFormatableFormat$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val firstMessageArg = args[1] as NdefMessagePigeon
val wrapped: List<Any?> = try {
api.ndefFormatableFormat(handleArg, firstMessageArg)
listOf(null)
} catch (exception: Throwable) {
PigeonPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.nfc_manager.HostApiPigeon.ndefFormatableFormatReadOnly$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val handleArg = args[0] as String
val firstMessageArg = args[1] as NdefMessagePigeon
val wrapped: List<Any?> = 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
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
================================================
FILE: example/android/app/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="nfc_manager_example"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
</manifest>
================================================
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
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
================================================
FILE: example/android/app/src/main/res/drawable-v21/launch_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
================================================
FILE: example/android/app/src/main/res/values/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
================================================
FILE: example/android/app/src/main/res/values-night/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
================================================
FILE: example/android/app/src/profile/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
================================================
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<Delete>("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
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
</dict>
</plist>
================================================
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
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>
================================================
FILE: example/ios/Runner/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>
================================================
FILE: example/ios/Runner/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>nfc_manager_example</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>nfc_manager_example</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneClassName</key>
<string>UIWindowScene</string>
<key>UISceneConfigurationName</key>
<string>flutter</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
================================================
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 = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
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 = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
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 = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* 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 = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
);
name = Flutter;
sourceTree = "<group>";
};
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
);
sourceTree = "<group>";
};
97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
331C8081294A63A400263BE5 /* RunnerTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
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 = "<group>";
};
/* 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 = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* 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
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>
================================================
FILE: example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
================================================
FILE: example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>
================================================
FILE: example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<PreActions>
<ExecutionAction
ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
<ActionContent
title = "Run Prepare Flutter Framework Script"
scriptText = "/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" prepare ">
<EnvironmentBuildable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</EnvironmentBuildable>
</ActionContent>
</ExecutionAction>
</PreActions>
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "331C8080294A63A400263BE5"
BuildableName = "RunnerTests.xctest"
BlueprintName = "RunnerTests"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: example/ios/Runner.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>
================================================
FILE: example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
================================================
FILE: example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>
================================================
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<NdefQueryStatusPigeon, Error>) -> 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<NdefMessagePigeon?, Error>) -> 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, Error>) -> 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, Error>) -> 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<FeliCaPollingResponsePigeon, 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.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<Int64, 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.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<FeliCaReadWithoutEncryptionResponsePigeon, 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.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<FeliCaStatusFlagPigeon, 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.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<FeliCaRequestServiceV2ResponsePigeon, 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.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<FeliCaRequestSpecificationVersionResponsePigeon, 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.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<FeliCaStatusFlagPigeon, 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.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<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.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<FlutterStandardTypedData, Error>) -> 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<Iso7816ResponseApduPigeon, Error>) -> 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<Iso7816ResponseApduPigeon, Error>) -> 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<Iso7816ResponseApduPigeon, Error>) -> 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<Iso7816ResponseApduPigeon, Error>) -> 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, 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.stayQuiet() { error in
if let error = error {
completion(.failure(error))
return
}
completion(.success(()))
}
}
func iso15693ReadSingleBlock(handle: String, requestFlags: [Iso15693RequestFlagPigeon], blockNumber: 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.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, 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.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, 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.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, 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.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, 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.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, 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.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, 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.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, 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.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, 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.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, 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.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<Iso15693SystemInfoPigeon, 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.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<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.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: FeliCaPollingRequestCodeP
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
SYMBOL INDEX (582 symbols across 26 files)
FILE: example/lib/main.dart
function main (line 3) | void main()
FILE: lib/src/nfc_manager/nfc_manager.dart
class NfcManager (line 7) | abstract class NfcManager {
method isAvailable (line 23) | Future<bool> isAvailable()
method checkAvailability (line 26) | Future<NfcAvailability> checkAvailability()
method startSession (line 42) | Future<void> startSession({
method stopSession (line 55) | Future<void> stopSession({String? alertMessageIos, String? errorMessag...
class NfcTag (line 62) | final class NfcTag {
type NfcAvailability (line 78) | enum NfcAvailability {
type NfcPollingOption (line 90) | enum NfcPollingOption {
FILE: lib/src/nfc_manager_android/nfc_manager.dart
class NfcManagerAndroid (line 8) | final class NfcManagerAndroid {
method isEnabled (line 24) | Future<bool> isEnabled()
method isSecureNfcEnabled (line 29) | Future<bool> isSecureNfcEnabled()
method isSecureNfcSupported (line 34) | Future<bool> isSecureNfcSupported()
method enableReaderMode (line 39) | Future<void> enableReaderMode({
method disableReaderMode (line 50) | Future<void> disableReaderMode()
class _FlutterApiAndroid (line 56) | final class _FlutterApiAndroid implements FlutterApiPigeon {
method onAdapterStateChanged (line 64) | void onAdapterStateChanged(AdapterStatePigeon state)
method onTagDiscovered (line 71) | void onTagDiscovered(TagPigeon tag)
type NfcReaderFlagAndroid (line 78) | enum NfcReaderFlagAndroid {
type NfcAdapterStateAndroid (line 102) | enum NfcAdapterStateAndroid {
FILE: lib/src/nfc_manager_android/nfc_manager_platform.dart
class NfcManagerAndroidPlatform (line 6) | final class NfcManagerAndroidPlatform implements NfcManager {
method isAvailable (line 8) | Future<bool> isAvailable()
method checkAvailability (line 13) | Future<NfcAvailability> checkAvailability()
method startSession (line 23) | Future<void> startSession({
method stopSession (line 50) | Future<void> stopSession({String? alertMessageIos, String? errorMessag...
FILE: lib/src/nfc_manager_android/pigeon.g.dart
function _extractReplyValueOrThrow (line 12) | Object? _extractReplyValueOrThrow(
function wrapResponse (line 37) | List<Object?> wrapResponse({
function _deepEquals (line 51) | bool _deepEquals(Object? a, Object? b)
function _deepHash (line 92) | int _deepHash(Object? value)
type ReaderFlagPigeon (line 114) | enum ReaderFlagPigeon {
type AdapterStatePigeon (line 124) | enum AdapterStatePigeon { off, turningOn, on, turningOff }
type TypeNameFormatPigeon (line 126) | enum TypeNameFormatPigeon {
type NfcBarcodeTypePigeon (line 136) | enum NfcBarcodeTypePigeon { kovio, unknown }
type MifareClassicTypePigeon (line 138) | enum MifareClassicTypePigeon { classic, plus, pro, unknown }
type MifareUltralightTypePigeon (line 140) | enum MifareUltralightTypePigeon { ultralight, ultralightC, unknown }
class TagPigeon (line 142) | class TagPigeon {
method _toList (line 185) | List<Object?> _toList()
method encode (line 203) | Object encode()
method decode (line 207) | TagPigeon decode(Object result)
class NdefPigeon (line 255) | class NdefPigeon {
method _toList (line 274) | List<Object?> _toList()
method encode (line 284) | Object encode()
method decode (line 288) | NdefPigeon decode(Object result)
class NfcAPigeon (line 320) | class NfcAPigeon {
method _toList (line 327) | List<Object?> _toList()
method encode (line 331) | Object encode()
method decode (line 335) | NfcAPigeon decode(Object result)
class NfcBPigeon (line 357) | class NfcBPigeon {
method _toList (line 364) | List<Object?> _toList()
method encode (line 368) | Object encode()
method decode (line 372) | NfcBPigeon decode(Object result)
class NfcFPigeon (line 398) | class NfcFPigeon {
method _toList (line 405) | List<Object?> _toList()
method encode (line 409) | Object encode()
method decode (line 413) | NfcFPigeon decode(Object result)
class NfcVPigeon (line 439) | class NfcVPigeon {
method _toList (line 446) | List<Object?> _toList()
method encode (line 450) | Object encode()
method decode (line 454) | NfcVPigeon decode(Object result)
class IsoDepPigeon (line 480) | class IsoDepPigeon {
method _toList (line 493) | List<Object?> _toList()
method encode (line 501) | Object encode()
method decode (line 505) | IsoDepPigeon decode(Object result)
class MifareClassicPigeon (line 536) | class MifareClassicPigeon {
method _toList (line 552) | List<Object?> _toList()
method encode (line 556) | Object encode()
method decode (line 560) | MifareClassicPigeon decode(Object result)
class MifareUltralightPigeon (line 590) | class MifareUltralightPigeon {
method _toList (line 595) | List<Object?> _toList()
method encode (line 599) | Object encode()
method decode (line 603) | MifareUltralightPigeon decode(Object result)
class NfcBarcodePigeon (line 627) | class NfcBarcodePigeon {
method _toList (line 634) | List<Object?> _toList()
method encode (line 638) | Object encode()
method decode (line 642) | NfcBarcodePigeon decode(Object result)
class NdefMessagePigeon (line 667) | class NdefMessagePigeon {
method _toList (line 672) | List<Object?> _toList()
method encode (line 676) | Object encode()
method decode (line 680) | NdefMessagePigeon decode(Object result)
class NdefRecordPigeon (line 704) | class NdefRecordPigeon {
method _toList (line 720) | List<Object?> _toList()
method encode (line 724) | Object encode()
method decode (line 728) | NdefRecordPigeon decode(Object result)
class _PigeonCodec (line 758) | class _PigeonCodec extends StandardMessageCodec {
method writeValue (line 761) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 825) | Object? readValueOfType(int type, ReadBuffer buffer)
class FlutterApiPigeon (line 875) | abstract class FlutterApiPigeon {
method onTagDiscovered (line 878) | void onTagDiscovered(TagPigeon tag)
method onAdapterStateChanged (line 880) | void onAdapterStateChanged(AdapterStatePigeon state)
method setUp (line 882) | void setUp(
class HostApiPigeon (line 943) | class HostApiPigeon {
method nfcAdapterIsEnabled (line 960) | Future<bool> nfcAdapterIsEnabled()
method nfcAdapterIsSecureNfcEnabled (line 979) | Future<bool> nfcAdapterIsSecureNfcEnabled()
method nfcAdapterIsSecureNfcSupported (line 998) | Future<bool> nfcAdapterIsSecureNfcSupported()
method nfcAdapterEnableReaderMode (line 1017) | Future<void> nfcAdapterEnableReaderMode({
method nfcAdapterDisableReaderMode (line 1039) | Future<void> nfcAdapterDisableReaderMode()
method ndefGetNdefMessage (line 1057) | Future<NdefMessagePigeon?> ndefGetNdefMessage({
method ndefWriteNdefMessage (line 1080) | Future<void> ndefWriteNdefMessage({
method ndefMakeReadOnly (line 1103) | Future<bool> ndefMakeReadOnly({required String handle})
method nfcAGetMaxTransceiveLength (line 1124) | Future<int> nfcAGetMaxTransceiveLength({required String handle})
method nfcAGetTimeout (line 1145) | Future<int> nfcAGetTimeout({required String handle})
method nfcASetTimeout (line 1166) | Future<void> nfcASetTimeout({
method nfcATransceive (line 1189) | Future<Uint8List> nfcATransceive({
method nfcBGetMaxTransceiveLength (line 1213) | Future<int> nfcBGetMaxTransceiveLength({required String handle})
method nfcBTransceive (line 1234) | Future<Uint8List> nfcBTransceive({
method nfcFGetMaxTransceiveLength (line 1258) | Future<int> nfcFGetMaxTransceiveLength({required String handle})
method nfcFGetTimeout (line 1279) | Future<int> nfcFGetTimeout({required String handle})
method nfcFSetTimeout (line 1300) | Future<void> nfcFSetTimeout({
method nfcFTransceive (line 1323) | Future<Uint8List> nfcFTransceive({
method nfcVGetMaxTransceiveLength (line 1347) | Future<int> nfcVGetMaxTransceiveLength({required String handle})
method nfcVTransceive (line 1368) | Future<Uint8List> nfcVTransceive({
method isoDepGetMaxTransceiveLength (line 1392) | Future<int> isoDepGetMaxTransceiveLength({required String handle})
method isoDepGetTimeout (line 1413) | Future<int> isoDepGetTimeout({required String handle})
method isoDepSetTimeout (line 1434) | Future<void> isoDepSetTimeout({
method isoDepTransceive (line 1457) | Future<Uint8List> isoDepTransceive({
method mifareClassicGetMaxTransceiveLength (line 1481) | Future<int> mifareClassicGetMaxTransceiveLength({
method mifareClassicGetTimeout (line 1504) | Future<int> mifareClassicGetTimeout({required String handle})
method mifareClassicSetTimeout (line 1525) | Future<void> mifareClassicSetTimeout({
method mifareClassicBlockToSector (line 1548) | Future<int> mifareClassicBlockToSector({
method mifareClassicGetBlockCountInSector (line 1572) | Future<int> mifareClassicGetBlockCountInSector({
method mifareClassicSectorToBlock (line 1596) | Future<int> mifareClassicSectorToBlock({
method mifareClassicAuthenticateSectorWithKeyA (line 1620) | Future<bool> mifareClassicAuthenticateSectorWithKeyA({
method mifareClassicAuthenticateSectorWithKeyB (line 1645) | Future<bool> mifareClassicAuthenticateSectorWithKeyB({
method mifareClassicIncrement (line 1670) | Future<void> mifareClassicIncrement({
method mifareClassicDecrement (line 1694) | Future<void> mifareClassicDecrement({
method mifareClassicReadBlock (line 1718) | Future<Uint8List> mifareClassicReadBlock({
method mifareClassicWriteBlock (line 1742) | Future<void> mifareClassicWriteBlock({
method mifareClassicRestore (line 1766) | Future<void> mifareClassicRestore({
method mifareClassicTransfer (line 1789) | Future<void> mifareClassicTransfer({
method mifareClassicTransceive (line 1812) | Future<Uint8List> mifareClassicTransceive({
method mifareUltralightGetMaxTransceiveLength (line 1836) | Future<int> mifareUltralightGetMaxTransceiveLength({
method mifareUltralightGetTimeout (line 1859) | Future<int> mifareUltralightGetTimeout({required String handle})
method mifareUltralightSetTimeout (line 1880) | Future<void> mifareUltralightSetTimeout({
method mifareUltralightReadPages (line 1903) | Future<Uint8List> mifareUltralightReadPages({
method mifareUltralightWritePage (line 1927) | Future<void> mifareUltralightWritePage({
method mifareUltralightTransceive (line 1951) | Future<Uint8List> mifareUltralightTransceive({
method ndefFormatableFormat (line 1975) | Future<void> ndefFormatableFormat({
method ndefFormatableFormatReadOnly (line 1998) | Future<void> ndefFormatableFormatReadOnly({
FILE: lib/src/nfc_manager_android/tags/iso_dep.dart
class IsoDepAndroid (line 11) | final class IsoDepAndroid {
method from (line 37) | IsoDepAndroid? from(NfcTag tag)
method getMaxTransceiveLength (line 53) | Future<int> getMaxTransceiveLength()
method getTimeout (line 58) | Future<int> getTimeout()
method setTimeout (line 63) | Future<void> setTimeout(int timeout)
method transceive (line 68) | Future<Uint8List> transceive(Uint8List bytes)
FILE: lib/src/nfc_manager_android/tags/mifare_classic.dart
class MifareClassicAndroid (line 11) | final class MifareClassicAndroid {
method from (line 41) | MifareClassicAndroid? from(NfcTag tag)
method authenticateSectorWithKeyA (line 58) | Future<bool> authenticateSectorWithKeyA({
method authenticateSectorWithKeyB (line 70) | Future<bool> authenticateSectorWithKeyB({
method increment (line 82) | Future<void> increment({required int blockIndex, required int value})
method decrement (line 91) | Future<void> decrement({required int blockIndex, required int value})
method readBlock (line 100) | Future<Uint8List> readBlock({required int blockIndex})
method writeBlock (line 108) | Future<void> writeBlock({required int blockIndex, required Uint8List d...
method restore (line 117) | Future<void> restore({required int blockIndex})
method transfer (line 125) | Future<void> transfer({required int blockIndex})
method transceive (line 133) | Future<Uint8List> transceive(Uint8List bytes)
type MifareClassicTypeAndroid (line 139) | enum MifareClassicTypeAndroid {
FILE: lib/src/nfc_manager_android/tags/mifare_ultralight.dart
class MifareUltralightAndroid (line 11) | final class MifareUltralightAndroid {
method from (line 29) | MifareUltralightAndroid? from(NfcTag tag)
method getMaxTransceiveLength (line 43) | Future<int> getMaxTransceiveLength()
method getTimeout (line 48) | Future<int> getTimeout()
method setTimeout (line 53) | Future<void> setTimeout(int timeout)
method readPages (line 61) | Future<Uint8List> readPages({required int pageOffset})
method writePage (line 69) | Future<void> writePage({required int pageOffset, required Uint8List da...
method transceive (line 78) | Future<Uint8List> transceive(Uint8List bytes)
type MifareUltralightTypeAndroid (line 84) | enum MifareUltralightTypeAndroid {
FILE: lib/src/nfc_manager_android/tags/ndef.dart
class NdefAndroid (line 10) | final class NdefAndroid {
method from (line 44) | NdefAndroid? from(NfcTag tag)
method getNdefMessage (line 75) | Future<NdefMessage?> getNdefMessage()
method writeNdefMessage (line 99) | Future<void> writeNdefMessage(NdefMessage message)
method makeReadOnly (line 118) | Future<void> makeReadOnly()
FILE: lib/src/nfc_manager_android/tags/ndef_formatable.dart
class NdefFormatableAndroid (line 10) | final class NdefFormatableAndroid {
method from (line 21) | NdefFormatableAndroid? from(NfcTag tag)
method format (line 31) | Future<void> format(NdefMessage firstMessage)
method formatReadOnly (line 50) | Future<void> formatReadOnly(NdefMessage firstMessage)
FILE: lib/src/nfc_manager_android/tags/nfc_a.dart
class NfcAAndroid (line 11) | final class NfcAAndroid {
method from (line 33) | NfcAAndroid? from(NfcTag tag)
method getMaxTransceiveLength (line 48) | Future<int> getMaxTransceiveLength()
method getTimeout (line 53) | Future<int> getTimeout()
method setTimeout (line 58) | Future<void> setTimeout(int timeout)
method transceive (line 63) | Future<Uint8List> transceive(Uint8List bytes)
FILE: lib/src/nfc_manager_android/tags/nfc_b.dart
class NfcBAndroid (line 11) | final class NfcBAndroid {
method from (line 33) | NfcBAndroid? from(NfcTag tag)
method getMaxTransceiveLength (line 48) | Future<int> getMaxTransceiveLength()
method transceive (line 53) | Future<Uint8List> transceive(Uint8List bytes)
FILE: lib/src/nfc_manager_android/tags/nfc_barcode.dart
class NfcBarcodeAndroid (line 10) | final class NfcBarcodeAndroid {
method from (line 33) | NfcBarcodeAndroid? from(NfcTag tag)
type NfcBarcodeTypeAndroid (line 49) | enum NfcBarcodeTypeAndroid {
FILE: lib/src/nfc_manager_android/tags/nfc_f.dart
class NfcFAndroid (line 11) | final class NfcFAndroid {
method from (line 33) | NfcFAndroid? from(NfcTag tag)
method getMaxTransceiveLength (line 48) | Future<int> getMaxTransceiveLength()
method getTimeout (line 53) | Future<int> getTimeout()
method setTimeout (line 58) | Future<void> setTimeout(int timeout)
method transceive (line 63) | Future<Uint8List> transceive(Uint8List bytes)
FILE: lib/src/nfc_manager_android/tags/nfc_v.dart
class NfcVAndroid (line 11) | final class NfcVAndroid {
method from (line 33) | NfcVAndroid? from(NfcTag tag)
method getMaxTransceiveLength (line 48) | Future<int> getMaxTransceiveLength()
method transceive (line 53) | Future<Uint8List> transceive(Uint8List bytes)
FILE: lib/src/nfc_manager_android/tags/tag.dart
class NfcTagAndroid (line 9) | final class NfcTagAndroid {
method from (line 15) | NfcTagAndroid? from(NfcTag tag)
FILE: lib/src/nfc_manager_ios/nfc_manager.dart
class NfcManagerIos (line 7) | final class NfcManagerIos {
method tagSessionReadingAvailable (line 24) | Future<bool> tagSessionReadingAvailable()
method tagSessionBegin (line 29) | Future<void> tagSessionBegin({
method tagSessionInvalidate (line 50) | Future<void> tagSessionInvalidate({
method tagSessionSetAlertMessage (line 64) | Future<void> tagSessionSetAlertMessage({required String alertMessage})
method tagSessionRestartPolling (line 69) | Future<void> tagSessionRestartPolling()
method vasSessionBegin (line 74) | Future<void> vasSessionBegin({
method vasSessionInvalidate (line 101) | Future<void> vasSessionInvalidate({
method vasSessionSetAlertMessage (line 115) | Future<void> vasSessionSetAlertMessage({required String alertMessage})
class _FlutterApiIos (line 120) | final class _FlutterApiIos implements FlutterApiPigeon {
method tagSessionDidBecomeActive (line 128) | void tagSessionDidBecomeActive()
method tagSessionDidInvalidateWithError (line 133) | void tagSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error)
method tagSessionDidDetect (line 143) | void tagSessionDidDetect(TagPigeon tag)
method vasSessionDidBecomeActive (line 151) | void vasSessionDidBecomeActive()
method vasSessionDidInvalidateWithError (line 156) | void vasSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error)
method vasSessionDidReceive (line 166) | void vasSessionDidReceive(List<NfcVasResponsePigeon?> responses)
class NfcVasCommandConfigurationIos (line 182) | final class NfcVasCommandConfigurationIos {
class NfcVasResponseIos (line 202) | final class NfcVasResponseIos {
class NfcReaderSessionErrorIos (line 222) | final class NfcReaderSessionErrorIos {
type NfcVasCommandConfigurationModeIos (line 235) | enum NfcVasCommandConfigurationModeIos {
type NfcReaderErrorCodeIos (line 244) | enum NfcReaderErrorCodeIos {
type NfcVasResponseErrorCodeIos (line 313) | enum NfcVasResponseErrorCodeIos {
FILE: lib/src/nfc_manager_ios/nfc_manager_platform.dart
class NfcManagerIosPlatform (line 4) | final class NfcManagerIosPlatform implements NfcManager {
method isAvailable (line 6) | Future<bool> isAvailable()
method checkAvailability (line 11) | Future<NfcAvailability> checkAvailability()
method startSession (line 18) | Future<void> startSession({
method stopSession (line 36) | Future<void> stopSession({String? alertMessageIos, String? errorMessag...
FILE: lib/src/nfc_manager_ios/pigeon.g.dart
function _extractReplyValueOrThrow (line 12) | Object? _extractReplyValueOrThrow(
function wrapResponse (line 37) | List<Object?> wrapResponse({
function _deepEquals (line 51) | bool _deepEquals(Object? a, Object? b)
function _deepHash (line 92) | int _deepHash(Object? value)
type PollingOptionPigeon (line 114) | enum PollingOptionPigeon { iso14443, iso15693, iso18092 }
type NdefStatusPigeon (line 116) | enum NdefStatusPigeon { notSupported, readWrite, readOnly }
type TypeNameFormatPigeon (line 118) | enum TypeNameFormatPigeon {
type FeliCaPollingRequestCodePigeon (line 128) | enum FeliCaPollingRequestCodePigeon {
type FeliCaPollingTimeSlotPigeon (line 134) | enum FeliCaPollingTimeSlotPigeon { max1, max2, max4, max8, max16 }
type MiFareFamilyPigeon (line 136) | enum MiFareFamilyPigeon { unknown, ultralight, plus, desfire }
type Iso15693RequestFlagPigeon (line 138) | enum Iso15693RequestFlagPigeon {
type NfcVasCommandConfigurationModePigeon (line 147) | enum NfcVasCommandConfigurationModePigeon { normal, urlOnly }
type NfcReaderErrorCodePigeon (line 149) | enum NfcReaderErrorCodePigeon {
type NfcVasResponseErrorCodePigeon (line 176) | enum NfcVasResponseErrorCodePigeon {
class TagPigeon (line 187) | class TagPigeon {
method _toList (line 209) | List<Object?> _toList()
method encode (line 213) | Object encode()
method decode (line 217) | TagPigeon decode(Object result)
class NdefPigeon (line 251) | class NdefPigeon {
method _toList (line 264) | List<Object?> _toList()
method encode (line 268) | Object encode()
method decode (line 272) | NdefPigeon decode(Object result)
class FeliCaPigeon (line 300) | class FeliCaPigeon {
method _toList (line 307) | List<Object?> _toList()
method encode (line 311) | Object encode()
method decode (line 315) | FeliCaPigeon decode(Object result)
class Iso15693Pigeon (line 341) | class Iso15693Pigeon {
method _toList (line 354) | List<Object?> _toList()
method encode (line 358) | Object encode()
method decode (line 362) | Iso15693Pigeon decode(Object result)
class Iso7816Pigeon (line 390) | class Iso7816Pigeon {
method _toList (line 409) | List<Object?> _toList()
method encode (line 419) | Object encode()
method decode (line 423) | Iso7816Pigeon decode(Object result)
class MiFarePigeon (line 458) | class MiFarePigeon {
method _toList (line 471) | List<Object?> _toList()
method encode (line 475) | Object encode()
method decode (line 479) | MiFarePigeon decode(Object result)
class NdefQueryStatusPigeon (line 507) | class NdefQueryStatusPigeon {
method _toList (line 514) | List<Object?> _toList()
method encode (line 518) | Object encode()
method decode (line 522) | NdefQueryStatusPigeon decode(Object result)
class NdefMessagePigeon (line 548) | class NdefMessagePigeon {
method _toList (line 553) | List<Object?> _toList()
method encode (line 557) | Object encode()
method decode (line 561) | NdefMessagePigeon decode(Object result)
class NdefPayloadPigeon (line 585) | class NdefPayloadPigeon {
method _toList (line 601) | List<Object?> _toList()
method encode (line 605) | Object encode()
method decode (line 609) | NdefPayloadPigeon decode(Object result)
class FeliCaPollingResponsePigeon (line 639) | class FeliCaPollingResponsePigeon {
method _toList (line 649) | List<Object?> _toList()
method encode (line 653) | Object encode()
method decode (line 657) | FeliCaPollingResponsePigeon decode(Object result)
class FeliCaReadWithoutEncryptionResponsePigeon (line 684) | class FeliCaReadWithoutEncryptionResponsePigeon {
method _toList (line 697) | List<Object?> _toList()
method encode (line 701) | Object encode()
method decode (line 705) | FeliCaReadWithoutEncryptionResponsePigeon decode(Object result)
class FeliCaRequestServiceV2ResponsePigeon (line 734) | class FeliCaRequestServiceV2ResponsePigeon {
method _toList (line 753) | List<Object?> _toList()
method encode (line 763) | Object encode()
method decode (line 767) | FeliCaRequestServiceV2ResponsePigeon decode(Object result)
class FeliCaRequestSpecificationVersionResponsePigeon (line 800) | class FeliCaRequestSpecificationVersionResponsePigeon {
method _toList (line 816) | List<Object?> _toList()
method encode (line 820) | Object encode()
method decode (line 824) | FeliCaRequestSpecificationVersionResponsePigeon decode(Object result)
class FeliCaStatusFlagPigeon (line 855) | class FeliCaStatusFlagPigeon {
method _toList (line 865) | List<Object?> _toList()
method encode (line 869) | Object encode()
method decode (line 873) | FeliCaStatusFlagPigeon decode(Object result)
class Iso7816ApduPigeon (line 899) | class Iso7816ApduPigeon {
method _toList (line 921) | List<Object?> _toList()
method encode (line 932) | Object encode()
method decode (line 936) | Iso7816ApduPigeon decode(Object result)
class Iso7816ResponseApduPigeon (line 970) | class Iso7816ResponseApduPigeon {
method _toList (line 983) | List<Object?> _toList()
method encode (line 987) | Object encode()
method decode (line 991) | Iso7816ResponseApduPigeon decode(Object result)
class Iso15693SystemInfoPigeon (line 1020) | class Iso15693SystemInfoPigeon {
method _toList (line 1039) | List<Object?> _toList()
method encode (line 1049) | Object encode()
method decode (line 1053) | Iso15693SystemInfoPigeon decode(Object result)
class NfcReaderSessionErrorPigeon (line 1092) | class NfcReaderSessionErrorPigeon {
method _toList (line 1099) | List<Object?> _toList()
method encode (line 1103) | Object encode()
method decode (line 1107) | NfcReaderSessionErrorPigeon decode(Object result)
class NfcVasCommandConfigurationPigeon (line 1133) | class NfcVasCommandConfigurationPigeon {
method _toList (line 1146) | List<Object?> _toList()
method encode (line 1150) | Object encode()
method decode (line 1154) | NfcVasCommandConfigurationPigeon decode(Object result)
class NfcVasResponsePigeon (line 1183) | class NfcVasResponsePigeon {
method _toList (line 1196) | List<Object?> _toList()
method encode (line 1200) | Object encode()
method decode (line 1204) | NfcVasResponsePigeon decode(Object result)
class _PigeonCodec (line 1232) | class _PigeonCodec extends StandardMessageCodec {
method writeValue (line 1235) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 1335) | Object? readValueOfType(int type, ReadBuffer buffer)
class FlutterApiPigeon (line 1423) | abstract class FlutterApiPigeon {
method tagSessionDidBecomeActive (line 1426) | void tagSessionDidBecomeActive()
method tagSessionDidDetect (line 1428) | void tagSessionDidDetect(TagPigeon tag)
method tagSessionDidInvalidateWithError (line 1430) | void tagSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error)
method vasSessionDidBecomeActive (line 1432) | void vasSessionDidBecomeActive()
method vasSessionDidReceive (line 1434) | void vasSessionDidReceive(List<NfcVasResponsePigeon> responses)
method vasSessionDidInvalidateWithError (line 1436) | void vasSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error)
method setUp (line 1438) | void setUp(
class HostApiPigeon (line 1598) | class HostApiPigeon {
method tagSessionReadingAvailable (line 1615) | Future<bool> tagSessionReadingAvailable()
method tagSessionBegin (line 1634) | Future<void> tagSessionBegin({
method tagSessionInvalidate (line 1658) | Future<void> tagSessionInvalidate({
method tagSessionRestartPolling (line 1681) | Future<void> tagSessionRestartPolling()
method tagSessionSetAlertMessage (line 1699) | Future<void> tagSessionSetAlertMessage({required String alertMessage})
method vasSessionReadingAvailable (line 1719) | Future<bool> vasSessionReadingAvailable()
method vasSessionBegin (line 1738) | Future<void> vasSessionBegin({
method vasSessionInvalidate (line 1761) | Future<void> vasSessionInvalidate({
method vasSessionSetAlertMessage (line 1784) | Future<void> vasSessionSetAlertMessage({required String alertMessage})
method ndefQueryNdefStatus (line 1804) | Future<NdefQueryStatusPigeon> ndefQueryNdefStatus({
method ndefReadNdef (line 1827) | Future<NdefMessagePigeon?> ndefReadNdef({required String handle})
method ndefWriteNdef (line 1848) | Future<void> ndefWriteNdef({
method ndefWriteLock (line 1871) | Future<void> ndefWriteLock({required String handle})
method feliCaPolling (line 1891) | Future<FeliCaPollingResponsePigeon> feliCaPolling({
method feliCaRequestService (line 1917) | Future<List<Uint8List>> feliCaRequestService({
method feliCaRequestResponse (line 1941) | Future<int> feliCaRequestResponse({required String handle})
method feliCaReadWithoutEncryption (line 1962) | Future<FeliCaReadWithoutEncryptionResponsePigeon>
method feliCaWriteWithoutEncryption (line 1988) | Future<FeliCaStatusFlagPigeon> feliCaWriteWithoutEncryption({
method feliCaRequestSystemCode (line 2014) | Future<List<Uint8List>> feliCaRequestSystemCode({
method feliCaRequestServiceV2 (line 2037) | Future<FeliCaRequestServiceV2ResponsePigeon> feliCaRequestServiceV2({
method feliCaRequestSpecificationVersion (line 2061) | Future<FeliCaRequestSpecificationVersionResponsePigeon>
method feliCaResetMode (line 2084) | Future<FeliCaStatusFlagPigeon> feliCaResetMode({
method feliCaSendFeliCaCommand (line 2107) | Future<Uint8List> feliCaSendFeliCaCommand({
method miFareSendMiFareCommand (line 2131) | Future<Uint8List> miFareSendMiFareCommand({
method miFareSendMiFareISO7816Command (line 2155) | Future<Iso7816ResponseApduPigeon> miFareSendMiFareISO7816Command({
method miFareSendMiFareISO7816CommandRaw (line 2179) | Future<Iso7816ResponseApduPigeon> miFareSendMiFareISO7816CommandRaw({
method iso7816SendCommand (line 2203) | Future<Iso7816ResponseApduPigeon> iso7816SendCommand({
method iso7816SendCommandRaw (line 2227) | Future<Iso7816ResponseApduPigeon> iso7816SendCommandRaw({
method iso15693StayQuiet (line 2251) | Future<void> iso15693StayQuiet({required String handle})
method iso15693ReadSingleBlock (line 2271) | Future<Uint8List> iso15693ReadSingleBlock({
method iso15693WriteSingleBlock (line 2296) | Future<void> iso15693WriteSingleBlock({
method iso15693LockBlock (line 2321) | Future<void> iso15693LockBlock({
method iso15693ReadMultipleBlocks (line 2345) | Future<List<Uint8List>> iso15693ReadMultipleBlocks({
method iso15693WriteMultipleBlocks (line 2371) | Future<void> iso15693WriteMultipleBlocks({
method iso15693Select (line 2397) | Future<void> iso15693Select({
method iso15693ResetToReady (line 2420) | Future<void> iso15693ResetToReady({
method iso15693WriteAfi (line 2443) | Future<void> iso15693WriteAfi({
method iso15693LockAfi (line 2467) | Future<void> iso15693LockAfi({
method iso15693WriteDsfId (line 2490) | Future<void> iso15693WriteDsfId({
method iso15693LockDsfId (line 2514) | Future<void> iso15693LockDsfId({
method iso15693GetSystemInfo (line 2537) | Future<Iso15693SystemInfoPigeon> iso15693GetSystemInfo({
method iso15693GetMultipleBlockSecurityStatus (line 2561) | Future<List<int>> iso15693GetMultipleBlockSecurityStatus({
method iso15693CustomCommand (line 2587) | Future<Uint8List> iso15693CustomCommand({
FILE: lib/src/nfc_manager_ios/tags/felica.dart
class FeliCaIos (line 9) | final class FeliCaIos {
method from (line 27) | FeliCaIos? from(NfcTag tag)
method polling (line 40) | Future<FeliCaPollingResponseIos> polling({
method requestService (line 63) | Future<List<Uint8List>> requestService({
method requestResponse (line 72) | Future<int> requestResponse()
method readWithoutEncryption (line 77) | Future<FeliCaReadWithoutEncryptionResponseIos> readWithoutEncryption({
method writeWithoutEncryption (line 97) | Future<FeliCaStatusFlagIos> writeWithoutEncryption({
method requestSystemCode (line 118) | Future<List<Uint8List>> requestSystemCode()
method requestServiceV2 (line 125) | Future<FeliCaRequestServiceV2ResponseIos> requestServiceV2({
method requestSpecificationVersion (line 146) | Future<FeliCaRequestSpecificationVersionResponseIos>
method resetMode (line 161) | Future<FeliCaStatusFlagIos> resetMode()
method sendFeliCaCommand (line 173) | Future<Uint8List> sendFeliCaCommand({required Uint8List commandPacket})
class FeliCaPollingResponseIos (line 182) | final class FeliCaPollingResponseIos {
class FeliCaStatusFlagIos (line 198) | final class FeliCaStatusFlagIos {
class FeliCaReadWithoutEncryptionResponseIos (line 214) | final class FeliCaReadWithoutEncryptionResponseIos {
class FeliCaRequestServiceV2ResponseIos (line 234) | final class FeliCaRequestServiceV2ResponseIos {
class FeliCaRequestSpecificationVersionResponseIos (line 262) | final class FeliCaRequestSpecificationVersionResponseIos {
type FeliCaPollingRequestCodeIos (line 286) | enum FeliCaPollingRequestCodeIos {
type FeliCaPollingTimeSlotIos (line 298) | enum FeliCaPollingTimeSlotIos {
FILE: lib/src/nfc_manager_ios/tags/iso15693.dart
class Iso15693Ios (line 9) | final class Iso15693Ios {
method from (line 31) | Iso15693Ios? from(NfcTag tag)
method stayQuiet (line 45) | Future<void> stayQuiet()
method readSingleBlock (line 50) | Future<Uint8List> readSingleBlock({
method writeSingleBlock (line 64) | Future<void> writeSingleBlock({
method lockBlock (line 80) | Future<void> lockBlock({
method readMultipleBlocks (line 94) | Future<List<Uint8List>> readMultipleBlocks({
method writeMultipleBlocks (line 112) | Future<void> writeMultipleBlocks({
method select (line 130) | Future<void> select({required Set<Iso15693RequestFlagIos> requestFlags})
method resetToReady (line 140) | Future<void> resetToReady({
method writeAfi (line 152) | Future<void> writeAfi({
method lockAfi (line 166) | Future<void> lockAfi({required Set<Iso15693RequestFlagIos> requestFlags})
method writeDsfId (line 176) | Future<void> writeDsfId({
method lockDsfId (line 190) | Future<void> lockDsfId({required Set<Iso15693RequestFlagIos> requestFl...
method getSystemInfo (line 200) | Future<Iso15693SystemInfoIos> getSystemInfo({
method getMultipleBlockSecurityStatus (line 222) | Future<List<int>> getMultipleBlockSecurityStatus({
method customCommand (line 240) | Future<Uint8List> customCommand({
class Iso15693SystemInfoIos (line 258) | final class Iso15693SystemInfoIos {
type Iso15693RequestFlagIos (line 287) | enum Iso15693RequestFlagIos {
FILE: lib/src/nfc_manager_ios/tags/iso7816.dart
class Iso7816Ios (line 9) | final class Iso7816Ios {
method from (line 39) | Iso7816Ios? from(NfcTag tag)
method sendCommand (line 55) | Future<Iso7816ResponseApduIos> sendCommand({
method sendCommandRaw (line 85) | Future<Iso7816ResponseApduIos> sendCommandRaw({required Uint8List data})
class Iso7816ResponseApduIos (line 99) | final class Iso7816ResponseApduIos {
FILE: lib/src/nfc_manager_ios/tags/mifare.dart
class MiFareIos (line 10) | final class MiFareIos {
method from (line 32) | MiFareIos? from(NfcTag tag)
method sendMiFareCommand (line 46) | Future<Uint8List> sendMiFareCommand({required Uint8List commandPacket})
method sendMiFareIso7816Command (line 54) | Future<Iso7816ResponseApduIos> sendMiFareIso7816Command({
method sendMiFareIso7816CommandRaw (line 85) | Future<Iso7816ResponseApduIos> sendMiFareIso7816CommandRaw({
type MiFareFamilyIos (line 102) | enum MiFareFamilyIos {
FILE: lib/src/nfc_manager_ios/tags/ndef.dart
class NdefIos (line 10) | final class NdefIos {
method from (line 32) | NdefIos? from(NfcTag tag)
method queryNdefStatus (line 61) | Future<QueryNdefStatusResponseIos> queryNdefStatus()
method readNdef (line 73) | Future<NdefMessage?> readNdef()
method writeNdef (line 97) | Future<void> writeNdef(NdefMessage message)
method writeLock (line 118) | Future<void> writeLock()
class QueryNdefStatusResponseIos (line 124) | final class QueryNdefStatusResponseIos {
type NdefStatusIos (line 140) | enum NdefStatusIos {
FILE: pigeon/android.dart
class FlutterApiPigeon (line 3) | @ConfigurePigeon(
method onTagDiscovered (line 14) | void onTagDiscovered(TagPigeon tag)
method onAdapterStateChanged (line 15) | void onAdapterStateChanged(AdapterStatePigeon state)
class HostApiPigeon (line 18) | @HostApi()
method nfcAdapterIsEnabled (line 20) | bool nfcAdapterIsEnabled()
method nfcAdapterIsSecureNfcEnabled (line 21) | bool nfcAdapterIsSecureNfcEnabled()
method nfcAdapterIsSecureNfcSupported (line 22) | bool nfcAdapterIsSecureNfcSupported()
method nfcAdapterEnableReaderMode (line 23) | void nfcAdapterEnableReaderMode({required List<ReaderFlagPigeon> flags})
method nfcAdapterDisableReaderMode (line 24) | void nfcAdapterDisableReaderMode()
method ndefGetNdefMessage (line 25) | NdefMessagePigeon? ndefGetNdefMessage({required String handle})
method ndefWriteNdefMessage (line 26) | void ndefWriteNdefMessage({required String handle, required NdefMessag...
method ndefMakeReadOnly (line 27) | bool ndefMakeReadOnly({required String handle})
method nfcAGetMaxTransceiveLength (line 28) | int nfcAGetMaxTransceiveLength({required String handle})
method nfcAGetTimeout (line 29) | int nfcAGetTimeout({required String handle})
method nfcASetTimeout (line 30) | void nfcASetTimeout({required String handle, required int timeout})
method nfcATransceive (line 31) | Uint8List nfcATransceive({required String handle, required Uint8List b...
method nfcBGetMaxTransceiveLength (line 32) | int nfcBGetMaxTransceiveLength({required String handle})
method nfcBTransceive (line 33) | Uint8List nfcBTransceive({required String handle, required Uint8List b...
method nfcFGetMaxTransceiveLength (line 34) | int nfcFGetMaxTransceiveLength({required String handle})
method nfcFGetTimeout (line 35) | int nfcFGetTimeout({required String handle})
method nfcFSetTimeout (line 36) | void nfcFSetTimeout({required String handle, required int timeout})
method nfcFTransceive (line 37) | Uint8List nfcFTransceive({required String handle, required Uint8List b...
method nfcVGetMaxTransceiveLength (line 38) | int nfcVGetMaxTransceiveLength({required String handle})
method nfcVTransceive (line 39) | Uint8List nfcVTransceive({required String handle, required Uint8List b...
method isoDepGetMaxTransceiveLength (line 40) | int isoDepGetMaxTransceiveLength({required String handle})
method isoDepGetTimeout (line 41) | int isoDepGetTimeout({required String handle})
method isoDepSetTimeout (line 42) | void isoDepSetTimeout({required String handle, required int timeout})
method isoDepTransceive (line 43) | Uint8List isoDepTransceive({required String handle, required Uint8List...
method mifareClassicGetMaxTransceiveLength (line 44) | int mifareClassicGetMaxTransceiveLength({required String handle})
method mifareClassicGetTimeout (line 45) | int mifareClassicGetTimeout({required String handle})
method mifareClassicSetTimeout (line 46) | void mifareClassicSetTimeout({required String handle, required int tim...
method mifareClassicBlockToSector (line 47) | int mifareClassicBlockToSector({required String handle, required int b...
method mifareClassicGetBlockCountInSector (line 48) | int mifareClassicGetBlockCountInSector({required String handle, requir...
method mifareClassicSectorToBlock (line 49) | int mifareClassicSectorToBlock({required String handle, required int s...
method mifareClassicAuthenticateSectorWithKeyA (line 50) | bool mifareClassicAuthenticateSectorWithKeyA({required String handle, ...
method mifareClassicAuthenticateSectorWithKeyB (line 51) | bool mifareClassicAuthenticateSectorWithKeyB({required String handle, ...
method mifareClassicIncrement (line 52) | void mifareClassicIncrement({required String handle, required int bloc...
method mifareClassicDecrement (line 53) | void mifareClassicDecrement({required String handle, required int bloc...
method mifareClassicReadBlock (line 54) | Uint8List mifareClassicReadBlock({required String handle, required int...
method mifareClassicWriteBlock (line 55) | void mifareClassicWriteBlock({required String handle, required int blo...
method mifareClassicRestore (line 56) | void mifareClassicRestore({required String handle, required int blockI...
method mifareClassicTransfer (line 57) | void mifareClassicTransfer({required String handle, required int block...
method mifareClassicTransceive (line 58) | Uint8List mifareClassicTransceive({required String handle, required Ui...
method mifareUltralightGetMaxTransceiveLength (line 59) | int mifareUltralightGetMaxTransceiveLength({required String handle})
method mifareUltralightGetTimeout (line 60) | int mifareUltralightGetTimeout({required String handle})
method mifareUltralightSetTimeout (line 61) | void mifareUltralightSetTimeout({required String handle, required int ...
method mifareUltralightReadPages (line 62) | Uint8List mifareUltralightReadPages({required String handle, required ...
method mifareUltralightWritePage (line 63) | void mifareUltralightWritePage({required String handle, required int p...
method mifareUltralightTransceive (line 64) | Uint8List mifareUltralightTransceive({required String handle, required...
method ndefFormatableFormat (line 65) | void ndefFormatableFormat({required String handle, required NdefMessag...
method ndefFormatableFormatReadOnly (line 66) | void ndefFormatableFormatReadOnly({required String handle, required Nd...
class TagPigeon (line 69) | class TagPigeon {
class NdefPigeon (line 100) | class NdefPigeon {
class NfcAPigeon (line 115) | class NfcAPigeon {
class NfcBPigeon (line 124) | class NfcBPigeon {
class NfcFPigeon (line 133) | class NfcFPigeon {
class NfcVPigeon (line 142) | class NfcVPigeon {
class IsoDepPigeon (line 151) | class IsoDepPigeon {
class MifareClassicPigeon (line 162) | class MifareClassicPigeon {
class MifareUltralightPigeon (line 175) | class MifareUltralightPigeon {
class NfcBarcodePigeon (line 182) | class NfcBarcodePigeon {
class NdefMessagePigeon (line 191) | class NdefMessagePigeon {
class NdefRecordPigeon (line 198) | class NdefRecordPigeon {
type ReaderFlagPigeon (line 211) | enum ReaderFlagPigeon {
type AdapterStatePigeon (line 221) | enum AdapterStatePigeon {
type TypeNameFormatPigeon (line 228) | enum TypeNameFormatPigeon {
type NfcBarcodeTypePigeon (line 238) | enum NfcBarcodeTypePigeon {
type MifareClassicTypePigeon (line 243) | enum MifareClassicTypePigeon {
type MifareUltralightTypePigeon (line 250) | enum MifareUltralightTypePigeon {
FILE: pigeon/ios.dart
class FlutterApiPigeon (line 3) | @ConfigurePigeon(
method tagSessionDidBecomeActive (line 13) | void tagSessionDidBecomeActive()
method tagSessionDidDetect (line 14) | void tagSessionDidDetect(TagPigeon tag)
method tagSessionDidInvalidateWithError (line 15) | void tagSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error)
method vasSessionDidBecomeActive (line 16) | void vasSessionDidBecomeActive()
method vasSessionDidReceive (line 17) | void vasSessionDidReceive(List<NfcVasResponsePigeon> responses)
method vasSessionDidInvalidateWithError (line 18) | void vasSessionDidInvalidateWithError(NfcReaderSessionErrorPigeon error)
class HostApiPigeon (line 21) | @HostApi()
method tagSessionReadingAvailable (line 23) | bool tagSessionReadingAvailable()
method tagSessionBegin (line 24) | void tagSessionBegin({required List<PollingOptionPigeon> pollingOption...
method tagSessionInvalidate (line 25) | void tagSessionInvalidate({required String? alertMessage, required Str...
method tagSessionRestartPolling (line 26) | void tagSessionRestartPolling()
method tagSessionSetAlertMessage (line 27) | void tagSessionSetAlertMessage({required String alertMessage})
method vasSessionReadingAvailable (line 28) | bool vasSessionReadingAvailable()
method vasSessionBegin (line 29) | void vasSessionBegin({required List<NfcVasCommandConfigurationPigeon> ...
method vasSessionInvalidate (line 30) | void vasSessionInvalidate({required String? alertMessage, required Str...
method vasSessionSetAlertMessage (line 31) | void vasSessionSetAlertMessage({required String alertMessage})
method ndefQueryNdefStatus (line 32) | NdefQueryStatusPigeon ndefQueryNdefStatus({required String handle})
method ndefReadNdef (line 33) | NdefMessagePigeon? ndefReadNdef({required String handle})
method ndefWriteNdef (line 34) | void ndefWriteNdef({required String handle, required NdefMessagePigeon...
method ndefWriteLock (line 35) | void ndefWriteLock({required String handle})
method feliCaPolling (line 36) | FeliCaPollingResponsePigeon feliCaPolling({required String handle, req...
method feliCaRequestService (line 37) | List<Uint8List> feliCaRequestService({required String handle, required...
method feliCaRequestResponse (line 38) | int feliCaRequestResponse({required String handle})
method feliCaReadWithoutEncryption (line 39) | FeliCaReadWithoutEncryptionResponsePigeon feliCaReadWithoutEncryption(...
method feliCaWriteWithoutEncryption (line 40) | FeliCaStatusFlagPigeon feliCaWriteWithoutEncryption({required String h...
method feliCaRequestSystemCode (line 41) | List<Uint8List> feliCaRequestSystemCode({required String handle})
method feliCaRequestServiceV2 (line 42) | FeliCaRequestServiceV2ResponsePigeon feliCaRequestServiceV2({required ...
method feliCaRequestSpecificationVersion (line 43) | FeliCaRequestSpecificationVersionResponsePigeon feliCaRequestSpecifica...
method feliCaResetMode (line 44) | FeliCaStatusFlagPigeon feliCaResetMode({required String handle})
method feliCaSendFeliCaCommand (line 45) | Uint8List feliCaSendFeliCaCommand({required String handle, required Ui...
method miFareSendMiFareCommand (line 46) | Uint8List miFareSendMiFareCommand({required String handle, required Ui...
method miFareSendMiFareISO7816Command (line 47) | Iso7816ResponseApduPigeon miFareSendMiFareISO7816Command({required Str...
method miFareSendMiFareISO7816CommandRaw (line 48) | Iso7816ResponseApduPigeon miFareSendMiFareISO7816CommandRaw({required ...
method iso7816SendCommand (line 49) | Iso7816ResponseApduPigeon iso7816SendCommand({required String handle, ...
method iso7816SendCommandRaw (line 50) | Iso7816ResponseApduPigeon iso7816SendCommandRaw({required String handl...
method iso15693StayQuiet (line 51) | void iso15693StayQuiet({required String handle})
method iso15693ReadSingleBlock (line 52) | Uint8List iso15693ReadSingleBlock({required String handle, required Li...
method iso15693WriteSingleBlock (line 53) | void iso15693WriteSingleBlock({required String handle, required List<I...
method iso15693LockBlock (line 54) | void iso15693LockBlock({required String handle, required List<Iso15693...
method iso15693ReadMultipleBlocks (line 55) | List<Uint8List> iso15693ReadMultipleBlocks({required String handle, re...
method iso15693WriteMultipleBlocks (line 56) | void iso15693WriteMultipleBlocks({required String handle, required Lis...
method iso15693Select (line 57) | void iso15693Select({required String handle, required List<Iso15693Req...
method iso15693ResetToReady (line 58) | void iso15693ResetToReady({required String handle, required List<Iso15...
method iso15693WriteAfi (line 59) | void iso15693WriteAfi({required String handle, required List<Iso15693R...
method iso15693LockAfi (line 60) | void iso15693LockAfi({required String handle, required List<Iso15693Re...
method iso15693WriteDsfId (line 61) | void iso15693WriteDsfId({required String handle, required List<Iso1569...
method iso15693LockDsfId (line 62) | void iso15693LockDsfId({required String handle, required List<Iso15693...
method iso15693GetSystemInfo (line 63) | Iso15693SystemInfoPigeon iso15693GetSystemInfo({required String handle...
method iso15693GetMultipleBlockSecurityStatus (line 64) | List<int> iso15693GetMultipleBlockSecurityStatus({required String hand...
method iso15693CustomCommand (line 65) | Uint8List iso15693CustomCommand({required String handle, required List...
class TagPigeon (line 68) | class TagPigeon {
class NdefPigeon (line 85) | class NdefPigeon {
class FeliCaPigeon (line 96) | class FeliCaPigeon {
class Iso15693Pigeon (line 105) | class Iso15693Pigeon {
class Iso7816Pigeon (line 116) | class Iso7816Pigeon {
class MiFarePigeon (line 131) | class MiFarePigeon {
class NdefQueryStatusPigeon (line 142) | class NdefQueryStatusPigeon {
class NdefMessagePigeon (line 151) | class NdefMessagePigeon {
class NdefPayloadPigeon (line 158) | class NdefPayloadPigeon {
class FeliCaPollingResponsePigeon (line 171) | class FeliCaPollingResponsePigeon {
class FeliCaReadWithoutEncryptionResponsePigeon (line 180) | class FeliCaReadWithoutEncryptionResponsePigeon {
class FeliCaRequestServiceV2ResponsePigeon (line 191) | class FeliCaRequestServiceV2ResponsePigeon {
class FeliCaRequestSpecificationVersionResponsePigeon (line 206) | class FeliCaRequestSpecificationVersionResponsePigeon {
class FeliCaStatusFlagPigeon (line 219) | class FeliCaStatusFlagPigeon {
class Iso7816ApduPigeon (line 228) | class Iso7816ApduPigeon {
class Iso7816ResponseApduPigeon (line 245) | class Iso7816ResponseApduPigeon {
class Iso15693SystemInfoPigeon (line 256) | class Iso15693SystemInfoPigeon {
class NfcReaderSessionErrorPigeon (line 271) | class NfcReaderSessionErrorPigeon {
class NfcVasCommandConfigurationPigeon (line 280) | class NfcVasCommandConfigurationPigeon {
class NfcVasResponsePigeon (line 291) | class NfcVasResponsePigeon {
type PollingOptionPigeon (line 302) | enum PollingOptionPigeon {
type NdefStatusPigeon (line 308) | enum NdefStatusPigeon {
type TypeNameFormatPigeon (line 314) | enum TypeNameFormatPigeon {
type FeliCaPollingRequestCodePigeon (line 324) | enum FeliCaPollingRequestCodePigeon {
type FeliCaPollingTimeSlotPigeon (line 330) | enum FeliCaPollingTimeSlotPigeon {
type MiFareFamilyPigeon (line 338) | enum MiFareFamilyPigeon {
type Iso15693RequestFlagPigeon (line 345) | enum Iso15693RequestFlagPigeon {
type NfcVasCommandConfigurationModePigeon (line 354) | enum NfcVasCommandConfigurationModePigeon {
type NfcReaderErrorCodePigeon (line 359) | enum NfcReaderErrorCodePigeon {
type NfcVasResponseErrorCodePigeon (line 386) | enum NfcVasResponseErrorCodePigeon {
Condensed preview — 92 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (549K chars).
[
{
"path": ".gitignore",
"chars": 591,
"preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.build/\n.buildlog/\n.history\n.svn/\n.swiftpm/\nmigrate_working_d"
},
{
"path": ".metadata",
"chars": 1117,
"preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
},
{
"path": "CHANGELOG.md",
"chars": 5421,
"preview": "## 4.2.0\n\n* Add Swift Package Manager support.\n* Bump dependencies.\n\n## 4.1.1\n\n* Avoid iOS SDK version constraints cause"
},
{
"path": "LICENSE",
"chars": 1063,
"preview": "MIT License\n\nCopyright (c) 2019 okadan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof "
},
{
"path": "README.md",
"chars": 2891,
"preview": "# nfc_manager\n\nA Flutter plugin providing access to NFC features on Android and iOS.\n\n## Setup\n\n### Android\n\n* Add [andr"
},
{
"path": "analysis_options.yaml",
"chars": 44,
"preview": "include: package:flutter_lints/flutter.yaml\n"
},
{
"path": "android/.gitignore",
"chars": 102,
"preview": "*.iml\n.gradle\n/local.properties\n/.idea/workspace.xml\n/.idea/libraries\n.DS_Store\n/build\n/captures\n.cxx\n"
},
{
"path": "android/build.gradle.kts",
"chars": 1571,
"preview": "group = \"dev.flutter.plugins.nfcmanager\"\nversion = \"1.0-SNAPSHOT\"\n\nbuildscript {\n val kotlinVersion = \"2.2.20\"\n re"
},
{
"path": "android/settings.gradle",
"chars": 33,
"preview": "rootProject.name = 'nfc_manager'\n"
},
{
"path": "android/settings.gradle.kts",
"chars": 33,
"preview": "rootProject.name = 'nfc_manager'\n"
},
{
"path": "android/src/main/AndroidManifest.xml",
"chars": 125,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"dev.flutter.plugins.nfcmanager\">\n</manif"
},
{
"path": "android/src/main/kotlin/dev/flutter/plugins/nfcmanager/NfcManagerPlugin.kt",
"chars": 19322,
"preview": "package dev.flutter.plugins.nfcmanager\n\nimport android.app.Activity\nimport android.app.PendingIntent\nimport android.cont"
},
{
"path": "android/src/main/kotlin/dev/flutter/plugins/nfcmanager/Pigeon.kt",
"chars": 69810,
"preview": "// Autogenerated from Pigeon (v26.3.3), do not edit directly.\n// See also: https://pub.dev/packages/pigeon\n@file:Suppres"
},
{
"path": "android/src/test/kotlin/dev/flutter/plugins/nfcmanager/NfcManagerPluginTest.kt",
"chars": 79,
"preview": "package dev.flutter.plugins.nfcmanager\n\ninternal class NfcManagerPluginTest {}\n"
},
{
"path": "example/.gitignore",
"chars": 703,
"preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.build/\n.buildlog/\n.history\n.svn/\n.swiftpm/\nmigrate_working_d"
},
{
"path": "example/README.md",
"chars": 666,
"preview": "# nfc_manager_example\n\nDemonstrates how to use the nfc_manager plugin.\n\n## Getting Started\n\nThis project is a starting p"
},
{
"path": "example/analysis_options.yaml",
"chars": 44,
"preview": "include: package:flutter_lints/flutter.yaml\n"
},
{
"path": "example/android/.gitignore",
"chars": 253,
"preview": "gradle-wrapper.jar\n/.gradle\n/captures/\n/gradlew\n/gradlew.bat\n/local.properties\nGeneratedPluginRegistrant.java\n.cxx/\n\n# R"
},
{
"path": "example/android/app/build.gradle.kts",
"chars": 1422,
"preview": "plugins {\n id(\"com.android.application\")\n id(\"kotlin-android\")\n // The Flutter Gradle Plugin must be applied af"
},
{
"path": "example/android/app/src/debug/AndroidManifest.xml",
"chars": 378,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <!-- The INTERNET permission is required for d"
},
{
"path": "example/android/app/src/main/AndroidManifest.xml",
"chars": 2207,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <application\n android:label=\"nfc_manage"
},
{
"path": "example/android/app/src/main/kotlin/dev/flutter/plugins/nfcmanagerexample/MainActivity.kt",
"chars": 139,
"preview": "package dev.flutter.plugins.nfcmanagerexample\n\nimport io.flutter.embedding.android.FlutterActivity\n\nclass MainActivity :"
},
{
"path": "example/android/app/src/main/res/drawable/launch_background.xml",
"chars": 434,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
},
{
"path": "example/android/app/src/main/res/drawable-v21/launch_background.xml",
"chars": 438,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
},
{
"path": "example/android/app/src/main/res/values/styles.xml",
"chars": 996,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- Theme applied to the Android Window while the process is sta"
},
{
"path": "example/android/app/src/main/res/values-night/styles.xml",
"chars": 995,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- Theme applied to the Android Window while the process is sta"
},
{
"path": "example/android/app/src/profile/AndroidManifest.xml",
"chars": 378,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <!-- The INTERNET permission is required for d"
},
{
"path": "example/android/build.gradle.kts",
"chars": 537,
"preview": "allprojects {\n repositories {\n google()\n mavenCentral()\n }\n}\n\nval newBuildDir: Directory =\n rootP"
},
{
"path": "example/android/gradle/wrapper/gradle-wrapper.properties",
"chars": 201,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dist"
},
{
"path": "example/android/gradle.properties",
"chars": 138,
"preview": "org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError\nandroid"
},
{
"path": "example/android/settings.gradle.kts",
"chars": 772,
"preview": "pluginManagement {\n val flutterSdkPath =\n run {\n val properties = java.util.Properties()\n "
},
{
"path": "example/ios/.gitignore",
"chars": 569,
"preview": "**/dgph\n*.mode1v3\n*.mode2v3\n*.moved-aside\n*.pbxuser\n*.perspectivev3\n**/*sync/\n.sconsign.dblite\n.tags*\n**/.vagrant/\n**/De"
},
{
"path": "example/ios/Flutter/AppFrameworkInfo.plist",
"chars": 720,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "example/ios/Flutter/Debug.xcconfig",
"chars": 30,
"preview": "#include \"Generated.xcconfig\"\n"
},
{
"path": "example/ios/Flutter/Release.xcconfig",
"chars": 30,
"preview": "#include \"Generated.xcconfig\"\n"
},
{
"path": "example/ios/Runner/AppDelegate.swift",
"chars": 539,
"preview": "import Flutter\nimport UIKit\n\n@main\n@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {\n overri"
},
{
"path": "example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 2519,
"preview": "{\n \"images\" : [\n {\n \"size\" : \"20x20\",\n \"idiom\" : \"iphone\",\n \"filename\" : \"Icon-App-20x20@2x.png\",\n "
},
{
"path": "example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
"chars": 391,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"LaunchImage.png\",\n \"scale\" : \"1x\"\n },\n "
},
{
"path": "example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
"chars": 336,
"preview": "# Launch Screen Assets\n\nYou can customize the launch screen with your own desired assets by replacing the image files in"
},
{
"path": "example/ios/Runner/Base.lproj/LaunchScreen.storyboard",
"chars": 2377,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "example/ios/Runner/Base.lproj/Main.storyboard",
"chars": 1605,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "example/ios/Runner/Info.plist",
"chars": 2236,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "example/ios/Runner/Runner-Bridging-Header.h",
"chars": 38,
"preview": "#import \"GeneratedPluginRegistrant.h\"\n"
},
{
"path": "example/ios/Runner/SceneDelegate.swift",
"chars": 61,
"preview": "import Flutter\n\nclass SceneDelegate: FlutterSceneDelegate {}\n"
},
{
"path": "example/ios/Runner.xcodeproj/project.pbxproj",
"chars": 25791,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 135,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:\">\n </FileRef"
},
{
"path": "example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
"chars": 226,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme",
"chars": 4717,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "example/ios/Runner.xcworkspace/contents.xcworkspacedata",
"chars": 152,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"group:Runner.xcodepr"
},
{
"path": "example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
"chars": 226,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "example/ios/RunnerTests/RunnerTests.swift",
"chars": 78,
"preview": "import XCTest\n\n@testable import nfc_manager\n\nclass RunnerTests: XCTestCase {}\n"
},
{
"path": "example/lib/main.dart",
"chars": 184,
"preview": "import 'package:flutter/material.dart';\n\nvoid main() {\n WidgetsFlutterBinding.ensureInitialized();\n runApp(MaterialApp"
},
{
"path": "example/pubspec.yaml",
"chars": 287,
"preview": "name: nfc_manager_example\ndescription: Demonstrates how to use the nfc_manager plugin.\npublish_to: none\n\nenvironment:\n "
},
{
"path": "ios/.gitignore",
"chars": 419,
"preview": ".idea/\n.vagrant/\n.sconsign.dblite\n.svn/\n\n.DS_Store\n*.swp\nprofile\n\nDerivedData/\nbuild/\nGeneratedPluginRegistrant.h\nGenera"
},
{
"path": "ios/nfc_manager/Package.swift",
"chars": 494,
"preview": "// swift-tools-version: 5.9\n// The swift-tools-version declares the minimum version of Swift required to build this pack"
},
{
"path": "ios/nfc_manager/Sources/nfc_manager/NfcManagerPlugin.swift",
"chars": 40069,
"preview": "import CoreNFC\nimport Flutter\n\npublic class NfcManagerPlugin: NSObject, FlutterPlugin, HostApiPigeon {\n private let flu"
},
{
"path": "ios/nfc_manager/Sources/nfc_manager/Pigeon.swift",
"chars": 94422,
"preview": "// Autogenerated from Pigeon (v26.3.3), do not edit directly.\n// See also: https://pub.dev/packages/pigeon\n\nimport Found"
},
{
"path": "ios/nfc_manager.podspec",
"chars": 955,
"preview": "#\n# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.\n# Run `pod lib lint nfc_manager.p"
},
{
"path": "lib/ndef_record.dart",
"chars": 47,
"preview": "export 'package:ndef_record/ndef_record.dart';\n"
},
{
"path": "lib/nfc_manager.dart",
"chars": 43,
"preview": "export 'src/nfc_manager/nfc_manager.dart';\n"
},
{
"path": "lib/nfc_manager_android.dart",
"chars": 637,
"preview": "export 'src/nfc_manager_android/nfc_manager.dart';\nexport 'src/nfc_manager_android/tags/iso_dep.dart';\nexport 'src/nfc_m"
},
{
"path": "lib/nfc_manager_ios.dart",
"chars": 283,
"preview": "export 'src/nfc_manager_ios/nfc_manager.dart';\nexport 'src/nfc_manager_ios/tags/felica.dart';\nexport 'src/nfc_manager_io"
},
{
"path": "lib/src/nfc_manager/nfc_manager.dart",
"chars": 3638,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:nfc_manager/src/nfc_manager_android/nfc_manager_platform.dart'"
},
{
"path": "lib/src/nfc_manager_android/nfc_manager.dart",
"chars": 2364,
"preview": "import 'dart:async';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/src/nfc"
},
{
"path": "lib/src/nfc_manager_android/nfc_manager_platform.dart",
"chars": 1801,
"preview": "import 'package:flutter/services.dart';\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:n"
},
{
"path": "lib/src/nfc_manager_android/pigeon.dart",
"chars": 102,
"preview": "import 'package:nfc_manager/src/nfc_manager_android/pigeon.g.dart';\n\nfinal hostApi = HostApiPigeon();\n"
},
{
"path": "lib/src/nfc_manager_android/pigeon.g.dart",
"chars": 61973,
"preview": "// Autogenerated from Pigeon (v26.3.3), do not edit directly.\n// See also: https://pub.dev/packages/pigeon\n// ignore_for"
},
{
"path": "lib/src/nfc_manager_android/tags/iso_dep.dart",
"chars": 1991,
"preview": "import 'dart:typed_data';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/sr"
},
{
"path": "lib/src/nfc_manager_android/tags/mifare_classic.dart",
"chars": 3472,
"preview": "import 'dart:typed_data';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/sr"
},
{
"path": "lib/src/nfc_manager_android/tags/mifare_ultralight.dart",
"chars": 2329,
"preview": "import 'dart:typed_data';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/sr"
},
{
"path": "lib/src/nfc_manager_android/tags/ndef.dart",
"chars": 3377,
"preview": "import 'package:ndef_record/ndef_record.dart';\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'pa"
},
{
"path": "lib/src/nfc_manager_android/tags/ndef_formatable.dart",
"chars": 2138,
"preview": "import 'package:ndef_record/ndef_record.dart';\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'pa"
},
{
"path": "lib/src/nfc_manager_android/tags/nfc_a.dart",
"chars": 1695,
"preview": "import 'dart:typed_data';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/sr"
},
{
"path": "lib/src/nfc_manager_android/tags/nfc_b.dart",
"chars": 1559,
"preview": "import 'dart:typed_data';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/sr"
},
{
"path": "lib/src/nfc_manager_android/tags/nfc_barcode.dart",
"chars": 1368,
"preview": "import 'dart:typed_data';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/sr"
},
{
"path": "lib/src/nfc_manager_android/tags/nfc_f.dart",
"chars": 1759,
"preview": "import 'dart:typed_data';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/sr"
},
{
"path": "lib/src/nfc_manager_android/tags/nfc_v.dart",
"chars": 1508,
"preview": "import 'dart:typed_data';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/sr"
},
{
"path": "lib/src/nfc_manager_android/tags/tag.dart",
"chars": 792,
"preview": "import 'dart:typed_data';\n\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/sr"
},
{
"path": "lib/src/nfc_manager_ios/nfc_manager.dart",
"chars": 7846,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package"
},
{
"path": "lib/src/nfc_manager_ios/nfc_manager_platform.dart",
"chars": 1395,
"preview": "import 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package:nfc_manager/src/nfc_manager_ios/nfc_manag"
},
{
"path": "lib/src/nfc_manager_ios/pigeon.dart",
"chars": 98,
"preview": "import 'package:nfc_manager/src/nfc_manager_ios/pigeon.g.dart';\n\nfinal hostApi = HostApiPigeon();\n"
},
{
"path": "lib/src/nfc_manager_ios/pigeon.g.dart",
"chars": 80917,
"preview": "// Autogenerated from Pigeon (v26.3.3), do not edit directly.\n// See also: https://pub.dev/packages/pigeon\n// ignore_for"
},
{
"path": "lib/src/nfc_manager_ios/tags/felica.dart",
"chars": 7355,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package"
},
{
"path": "lib/src/nfc_manager_ios/tags/iso15693.dart",
"chars": 8215,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package"
},
{
"path": "lib/src/nfc_manager_ios/tags/iso7816.dart",
"chars": 3058,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package"
},
{
"path": "lib/src/nfc_manager_ios/tags/mifare.dart",
"chars": 3014,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:nfc_manager/src/nfc_manager/nfc_manager.dart';\nimport 'package"
},
{
"path": "lib/src/nfc_manager_ios/tags/ndef.dart",
"chars": 3781,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:ndef_record/ndef_record.dart';\nimport 'package:nfc_manager/src"
},
{
"path": "pigeon/android.dart",
"chars": 7651,
"preview": "import 'package:pigeon/pigeon.dart';\n\n@ConfigurePigeon(\n PigeonOptions(\n dartPackageName: 'nfc_manager',\n dartOut"
},
{
"path": "pigeon/ios.dart",
"chars": 13283,
"preview": "import 'package:pigeon/pigeon.dart';\n\n@ConfigurePigeon(\n PigeonOptions(\n dartPackageName: 'nfc_manager',\n dartOut"
},
{
"path": "pubspec.yaml",
"chars": 551,
"preview": "name: nfc_manager\ndescription: A Flutter plugin providing access to NFC features on Android and iOS.\nrepository: https:/"
}
]
About this extraction
This page contains the full source code of the okadan/flutter-nfc-manager GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 92 files (510.8 KB), approximately 135.5k tokens, and a symbol index with 582 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.