diff --git a/.gitignore b/.gitignore index 0875f3acf3f4..0b1cd3084b70 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ Podfile.lock Pods/ .swiftpm/ .symlinks/ +*.g.o *instrumentscli*.trace *.cipd diff --git a/analysis_options.yaml b/analysis_options.yaml index daadedd6d5fb..ddf4f86b0e2d 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -23,6 +23,8 @@ analyzer: # Ignore generated files - '**/*.pb.dart' - '**/*.g.dart' + - '**/*.g.jni.dart' + - '**/*.g.ffi.dart' - '**/*.mocks.dart' # Mockito @GenerateMocks formatter: diff --git a/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesPlugin.kt b/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesPlugin.kt index bbdb3ecbadb5..a5afe2ed3655 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesPlugin.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesPlugin.kt @@ -35,7 +35,7 @@ internal constructor(private val listEncoder: SharedPreferencesListEncoder) : private fun setUp(messenger: BinaryMessenger, context: Context) { preferences = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE) try { - SharedPreferencesApi.setUp(messenger, this) + SharedPreferencesApiRegistrar().register(this) } catch (ex: Exception) { Log.e(TAG, "Received exception while setting up SharedPreferencesPlugin", ex) } @@ -46,7 +46,7 @@ internal constructor(private val listEncoder: SharedPreferencesListEncoder) : } override fun onDetachedFromEngine(binding: FlutterPluginBinding) { - SharedPreferencesApi.setUp(binding.binaryMessenger, null) + SharedPreferencesApiRegistrar().register(null) } override fun setBool(key: String, value: Boolean): Boolean { diff --git a/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/Messages.g.kt b/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/Messages.g.kt index dc7b10e2838a..2f55525031cc 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/Messages.g.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/Messages.g.kt @@ -1,20 +1,14 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.3.4), do not edit directly. +// Autogenerated from Pigeon (v27.4.0), do not edit directly. // See also: https://pub.dev/packages/pigeon @file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") package io.flutter.plugins.sharedpreferences import android.util.Log -import io.flutter.plugin.common.BasicMessageChannel -import io.flutter.plugin.common.BinaryMessenger -import io.flutter.plugin.common.MessageCodec -import io.flutter.plugin.common.StandardMessageCodec -import java.io.ByteArrayOutputStream -import java.nio.ByteBuffer - +import androidx.annotation.Keep private object MessagesPigeonUtils { fun wrapResult(result: Any?): List { @@ -23,40 +17,35 @@ private object MessagesPigeonUtils { fun wrapError(exception: Throwable): List { return if (exception is FlutterError) { - listOf(exception.code, exception.message, exception.details) + listOf( + exception.code, + exception.message, + exception.details + ) } else { listOf( - exception.javaClass.simpleName, - exception.toString(), - "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception)) + exception.javaClass.simpleName, + exception.toString(), + "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception) + ) } } } /** * 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 +class FlutterError ( + val code: String, + override val message: String? = null, + val details: Any? = null ) : RuntimeException() - -private open class MessagesPigeonCodec : StandardMessageCodec() { - override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? { - return super.readValueOfType(type, buffer) - } - - override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { - super.writeValue(stream, value) - } -} - -/** Generated interface from Pigeon that represents a handler of messages from Flutter. */ +private const val defaultInstanceName = "PigeonDefaultClassName32uh4ui3lh445uh4h3l2l455g4y34u" +val SharedPreferencesApiInstances: MutableMap = mutableMapOf() +@Keep interface SharedPreferencesApi { /** Removes property from shared preferences data set. */ fun remove(key: String): Boolean @@ -80,238 +69,136 @@ interface SharedPreferencesApi { fun clear(prefix: String, allowList: List?): Boolean /** Gets all properties from shared preferences data set with matching prefix. */ fun getAll(prefix: String, allowList: List?): Map - - companion object { - /** The codec used by SharedPreferencesApi. */ - val codec: MessageCodec by lazy { MessagesPigeonCodec() } - /** - * Sets up an instance of `SharedPreferencesApi` to handle messages through the - * `binaryMessenger`. - */ - @JvmOverloads - fun setUp( - binaryMessenger: BinaryMessenger, - api: SharedPreferencesApi?, - messageChannelSuffix: String = "" - ) { - val separatedMessageChannelSuffix = - if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" - val taskQueue = binaryMessenger.makeBackgroundTaskQueue() - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.remove$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val wrapped: List = - try { - listOf(api.remove(keyArg)) - } catch (exception: Throwable) { - MessagesPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } +} +@Keep +class SharedPreferencesApiRegistrar : SharedPreferencesApi { + private var api: SharedPreferencesApi? = null + fun register( + api: SharedPreferencesApi?, + name: String = defaultInstanceName + ): SharedPreferencesApiRegistrar { + if (api != null) { + this.api = api + SharedPreferencesApiInstances[name] = this + } else { + SharedPreferencesApiInstances.remove(name) + } + return this + } + @Keep + fun getInstance(name: String): SharedPreferencesApiRegistrar? { + return SharedPreferencesApiInstances[name] + } + /** Removes property from shared preferences data set. */ + override fun remove(key: String): Boolean + { + api?.let { + try { + return it.remove(key) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setBool$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as Boolean - val wrapped: List = - try { - listOf(api.setBool(keyArg, valueArg)) - } catch (exception: Throwable) { - MessagesPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesApi has not been registered") + } + /** Adds property to shared preferences data set of type `bool`. */ + override fun setBool(key: String, value: Boolean): Boolean + { + api?.let { + try { + return it.setBool(key, value) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setString$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as String - val wrapped: List = - try { - listOf(api.setString(keyArg, valueArg)) - } catch (exception: Throwable) { - MessagesPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesApi has not been registered") + } + /** Adds property to shared preferences data set of type `String`. */ + override fun setString(key: String, value: String): Boolean + { + api?.let { + try { + return it.setString(key, value) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setInt$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as Long - val wrapped: List = - try { - listOf(api.setInt(keyArg, valueArg)) - } catch (exception: Throwable) { - MessagesPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesApi has not been registered") + } + /** Adds property to shared preferences data set of type `int`. */ + override fun setInt(key: String, value: Long): Boolean + { + api?.let { + try { + return it.setInt(key, value) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setDouble$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as Double - val wrapped: List = - try { - listOf(api.setDouble(keyArg, valueArg)) - } catch (exception: Throwable) { - MessagesPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesApi has not been registered") + } + /** Adds property to shared preferences data set of type `double`. */ + override fun setDouble(key: String, value: Double): Boolean + { + api?.let { + try { + return it.setDouble(key, value) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setEncodedStringList$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as String - val wrapped: List = - try { - listOf(api.setEncodedStringList(keyArg, valueArg)) - } catch (exception: Throwable) { - MessagesPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesApi has not been registered") + } + /** Adds property to shared preferences data set of type `List`. */ + override fun setEncodedStringList(key: String, value: String): Boolean + { + api?.let { + try { + return it.setEncodedStringList(key, value) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setDeprecatedStringList$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as List - val wrapped: List = - try { - listOf(api.setDeprecatedStringList(keyArg, valueArg)) - } catch (exception: Throwable) { - MessagesPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesApi has not been registered") + } + /** + * Adds property to shared preferences data set of type `List`. + * + * Deprecated, this is only here for testing purposes. + */ + override fun setDeprecatedStringList(key: String, value: List): Boolean + { + api?.let { + try { + return it.setDeprecatedStringList(key, value) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.clear$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val prefixArg = args[0] as String - val allowListArg = args[1] as List? - val wrapped: List = - try { - listOf(api.clear(prefixArg, allowListArg)) - } catch (exception: Throwable) { - MessagesPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesApi has not been registered") + } + /** Removes all properties from shared preferences data set with matching prefix. */ + override fun clear(prefix: String, allowList: List?): Boolean + { + api?.let { + try { + return it.clear(prefix, allowList) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.getAll$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val prefixArg = args[0] as String - val allowListArg = args[1] as List? - val wrapped: List = - try { - listOf(api.getAll(prefixArg, allowListArg)) - } catch (exception: Throwable) { - MessagesPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesApi has not been registered") + } + /** Gets all properties from shared preferences data set with matching prefix. */ + override fun getAll(prefix: String, allowList: List?): Map + { + api?.let { + try { + return it.getAll(prefix, allowList) + } catch (e: Exception) { + throw e } } + error("SharedPreferencesApi has not been registered") } } diff --git a/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/MessagesAsync.g.kt b/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/MessagesAsync.g.kt index 6586290db543..2699c2bdb142 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/MessagesAsync.g.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/MessagesAsync.g.kt @@ -1,19 +1,14 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.3.4), do not edit directly. +// Autogenerated from Pigeon (v27.4.0), do not edit directly. // See also: https://pub.dev/packages/pigeon @file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") package io.flutter.plugins.sharedpreferences import android.util.Log -import io.flutter.plugin.common.BasicMessageChannel -import io.flutter.plugin.common.BinaryMessenger -import io.flutter.plugin.common.MessageCodec -import io.flutter.plugin.common.StandardMessageCodec -import java.io.ByteArrayOutputStream -import java.nio.ByteBuffer +import androidx.annotation.Keep private object MessagesAsyncPigeonUtils { @@ -190,6 +185,8 @@ class SharedPreferencesError( val details: Any? = null ) : RuntimeException() +private const val defaultInstanceName = "PigeonDefaultClassName32uh4ui3lh445uh4h3l2l455g4y34u" + /** Possible types found during a getStringList call. */ enum class StringListLookupResultType(val raw: Int) { /** A deprecated platform-side encoding string list. */ @@ -241,6 +238,10 @@ data class SharedPreferencesPigeonOptions(val fileName: String? = null, val useD result = 31 * result + MessagesAsyncPigeonUtils.deepHash(this.useDataStore) return result } + + override fun toString(): String { + return "SharedPreferencesPigeonOptions(fileName=$fileName, useDataStore=$useDataStore)" + } } /** Generated class from Pigeon that represents data sent in messages. */ @@ -283,46 +284,16 @@ data class StringListResult( result = 31 * result + MessagesAsyncPigeonUtils.deepHash(this.type) return result } -} - -private open class MessagesAsyncPigeonCodec : StandardMessageCodec() { - override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? { - return when (type) { - 129.toByte() -> { - return (readValue(buffer) as Long?)?.let { StringListLookupResultType.ofRaw(it.toInt()) } - } - 130.toByte() -> { - return (readValue(buffer) as? List)?.let { - SharedPreferencesPigeonOptions.fromList(it) - } - } - 131.toByte() -> { - return (readValue(buffer) as? List)?.let { StringListResult.fromList(it) } - } - else -> super.readValueOfType(type, buffer) - } - } - override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { - when (value) { - is StringListLookupResultType -> { - stream.write(129) - writeValue(stream, value.raw.toLong()) - } - is SharedPreferencesPigeonOptions -> { - stream.write(130) - writeValue(stream, value.toList()) - } - is StringListResult -> { - stream.write(131) - writeValue(stream, value.toList()) - } - else -> super.writeValue(stream, value) - } + override fun toString(): String { + return "StringListResult(jsonEncodedValue=$jsonEncodedValue, type=$type)" } } -/** Generated interface from Pigeon that represents a handler of messages from Flutter. */ +val SharedPreferencesAsyncApiInstances: MutableMap = + mutableMapOf() + +@Keep interface SharedPreferencesAsyncApi { /** Adds property to shared preferences data set of type `bool`. */ fun setBool(key: String, value: Boolean, options: SharedPreferencesPigeonOptions) @@ -365,396 +336,216 @@ interface SharedPreferencesAsyncApi { fun getAll(allowList: List?, options: SharedPreferencesPigeonOptions): Map /** Gets all properties from shared preferences data set with matching prefix. */ fun getKeys(allowList: List?, options: SharedPreferencesPigeonOptions): List +} - companion object { - /** The codec used by SharedPreferencesAsyncApi. */ - val codec: MessageCodec by lazy { MessagesAsyncPigeonCodec() } - /** - * Sets up an instance of `SharedPreferencesAsyncApi` to handle messages through the - * `binaryMessenger`. - */ - @JvmOverloads - fun setUp( - binaryMessenger: BinaryMessenger, - api: SharedPreferencesAsyncApi?, - messageChannelSuffix: String = "" - ) { - val separatedMessageChannelSuffix = - if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" - val taskQueue = binaryMessenger.makeBackgroundTaskQueue() - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setBool$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as Boolean - val optionsArg = args[2] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - api.setBool(keyArg, valueArg, optionsArg) - listOf(null) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } +@Keep +class SharedPreferencesAsyncApiRegistrar : SharedPreferencesAsyncApi { + private var api: SharedPreferencesAsyncApi? = null + + fun register( + api: SharedPreferencesAsyncApi?, + name: String = defaultInstanceName + ): SharedPreferencesAsyncApiRegistrar { + if (api != null) { + this.api = api + SharedPreferencesAsyncApiInstances[name] = this + } else { + SharedPreferencesAsyncApiInstances.remove(name) + } + return this + } + + @Keep + fun getInstance(name: String): SharedPreferencesAsyncApiRegistrar? { + return SharedPreferencesAsyncApiInstances[name] + } + /** Adds property to shared preferences data set of type `bool`. */ + override fun setBool(key: String, value: Boolean, options: SharedPreferencesPigeonOptions) { + api?.let { + try { + return it.setBool(key, value, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setString$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as String - val optionsArg = args[2] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - api.setString(keyArg, valueArg, optionsArg) - listOf(null) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Adds property to shared preferences data set of type `String`. */ + override fun setString(key: String, value: String, options: SharedPreferencesPigeonOptions) { + api?.let { + try { + return it.setString(key, value, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setInt$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as Long - val optionsArg = args[2] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - api.setInt(keyArg, valueArg, optionsArg) - listOf(null) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Adds property to shared preferences data set of type `int`. */ + override fun setInt(key: String, value: Long, options: SharedPreferencesPigeonOptions) { + api?.let { + try { + return it.setInt(key, value, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setDouble$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as Double - val optionsArg = args[2] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - api.setDouble(keyArg, valueArg, optionsArg) - listOf(null) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Adds property to shared preferences data set of type `double`. */ + override fun setDouble(key: String, value: Double, options: SharedPreferencesPigeonOptions) { + api?.let { + try { + return it.setDouble(key, value, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setEncodedStringList$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as String - val optionsArg = args[2] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - api.setEncodedStringList(keyArg, valueArg, optionsArg) - listOf(null) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Adds property to shared preferences data set of type `List`. */ + override fun setEncodedStringList( + key: String, + value: String, + options: SharedPreferencesPigeonOptions + ) { + api?.let { + try { + return it.setEncodedStringList(key, value, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setDeprecatedStringList$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val valueArg = args[1] as List - val optionsArg = args[2] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - api.setDeprecatedStringList(keyArg, valueArg, optionsArg) - listOf(null) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** + * Adds property to shared preferences data set of type `List`. + * + * Deprecated, this is only here for testing purposes. + */ + override fun setDeprecatedStringList( + key: String, + value: List, + options: SharedPreferencesPigeonOptions + ) { + api?.let { + try { + return it.setDeprecatedStringList(key, value, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getString$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val optionsArg = args[1] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - listOf(api.getString(keyArg, optionsArg)) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Gets individual String value stored with [key], if any. */ + override fun getString(key: String, options: SharedPreferencesPigeonOptions): String? { + api?.let { + try { + return it.getString(key, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getBool$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val optionsArg = args[1] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - listOf(api.getBool(keyArg, optionsArg)) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Gets individual void value stored with [key], if any. */ + override fun getBool(key: String, options: SharedPreferencesPigeonOptions): Boolean? { + api?.let { + try { + return it.getBool(key, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getDouble$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val optionsArg = args[1] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - listOf(api.getDouble(keyArg, optionsArg)) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Gets individual double value stored with [key], if any. */ + override fun getDouble(key: String, options: SharedPreferencesPigeonOptions): Double? { + api?.let { + try { + return it.getDouble(key, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getInt$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val optionsArg = args[1] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - listOf(api.getInt(keyArg, optionsArg)) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Gets individual int value stored with [key], if any. */ + override fun getInt(key: String, options: SharedPreferencesPigeonOptions): Long? { + api?.let { + try { + return it.getInt(key, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getPlatformEncodedStringList$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val optionsArg = args[1] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - listOf(api.getPlatformEncodedStringList(keyArg, optionsArg)) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Gets individual `List` value stored with [key], if any. */ + override fun getPlatformEncodedStringList( + key: String, + options: SharedPreferencesPigeonOptions + ): List? { + api?.let { + try { + return it.getPlatformEncodedStringList(key, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getStringList$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val keyArg = args[0] as String - val optionsArg = args[1] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - listOf(api.getStringList(keyArg, optionsArg)) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Gets the JSON-encoded `List` value stored with [key], if any. */ + override fun getStringList( + key: String, + options: SharedPreferencesPigeonOptions + ): StringListResult? { + api?.let { + try { + return it.getStringList(key, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.clear$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val allowListArg = args[0] as List? - val optionsArg = args[1] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - api.clear(allowListArg, optionsArg) - listOf(null) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Removes all properties from shared preferences data set with matching prefix. */ + override fun clear(allowList: List?, options: SharedPreferencesPigeonOptions) { + api?.let { + try { + return it.clear(allowList, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getAll$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val allowListArg = args[0] as List? - val optionsArg = args[1] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - listOf(api.getAll(allowListArg, optionsArg)) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Gets all properties from shared preferences data set with matching prefix. */ + override fun getAll( + allowList: List?, + options: SharedPreferencesPigeonOptions + ): Map { + api?.let { + try { + return it.getAll(allowList, options) + } catch (e: Exception) { + throw e } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getKeys$separatedMessageChannelSuffix", - codec, - taskQueue) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val allowListArg = args[0] as List? - val optionsArg = args[1] as SharedPreferencesPigeonOptions - val wrapped: List = - try { - listOf(api.getKeys(allowListArg, optionsArg)) - } catch (exception: Throwable) { - MessagesAsyncPigeonUtils.wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } + } + error("SharedPreferencesAsyncApi has not been registered") + } + /** Gets all properties from shared preferences data set with matching prefix. */ + override fun getKeys( + allowList: List?, + options: SharedPreferencesPigeonOptions + ): List { + api?.let { + try { + return it.getKeys(allowList, options) + } catch (e: Exception) { + throw e } } + error("SharedPreferencesAsyncApi has not been registered") } } diff --git a/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.kt b/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.kt index 31e9f236f4ac..941eb55dac61 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/main/kotlin/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.kt @@ -55,7 +55,7 @@ class SharedPreferencesPlugin() : FlutterPlugin, SharedPreferencesAsyncApi { private fun setUp(messenger: BinaryMessenger, context: Context) { this.context = context try { - SharedPreferencesAsyncApi.setUp(messenger, this, "data_store") + SharedPreferencesAsyncApiRegistrar().register(this, "data_store") backend = SharedPreferencesBackend(messenger, context, listEncoder) } catch (ex: Exception) { Log.e(TAG, "Received exception while setting up SharedPreferencesPlugin", ex) @@ -68,7 +68,7 @@ class SharedPreferencesPlugin() : FlutterPlugin, SharedPreferencesAsyncApi { } override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { - SharedPreferencesAsyncApi.setUp(binding.binaryMessenger, null, "data_store") + SharedPreferencesAsyncApiRegistrar().register(null, "data_store") backend?.tearDown() backend = null } @@ -284,14 +284,14 @@ class SharedPreferencesBackend( init { try { - SharedPreferencesAsyncApi.setUp(messenger, this, "shared_preferences") + SharedPreferencesAsyncApiRegistrar().register(this, "shared_preferences") } catch (ex: Exception) { Log.e(TAG, "Received exception while setting up SharedPreferencesBackend", ex) } } fun tearDown() { - SharedPreferencesAsyncApi.setUp(messenger, null, "shared_preferences") + SharedPreferencesAsyncApiRegistrar().register(null, "shared_preferences") } private fun createSharedPreferences(options: SharedPreferencesPigeonOptions): SharedPreferences { diff --git a/packages/shared_preferences/shared_preferences_android/example/android/app/build.gradle.kts b/packages/shared_preferences/shared_preferences_android/example/android/app/build.gradle.kts index 236fa8135fce..38cf52b1b72e 100644 --- a/packages/shared_preferences/shared_preferences_android/example/android/app/build.gradle.kts +++ b/packages/shared_preferences/shared_preferences_android/example/android/app/build.gradle.kts @@ -52,3 +52,89 @@ dependencies { androidTestImplementation("androidx.test.espresso:espresso-core:3.2.0") api("androidx.test:core:1.4.0") } +// Gradle stub for listing dependencies in JNIgen. If found in +// android/build.gradle.kts, please delete the following task. +tasks.register("getReleaseCompileClasspath") { + // Tell Gradle to complete the configuration phase of all subprojects (eg + // Flutter plugins) before continuing configuration of this project. + allprojects { + if (this != rootProject) { + evaluationDependsOn(path) + } + } + + // Fetch all the dependencies and extract the JARs. + allprojects { + val config = configurations.findByName("releaseCompileClasspath") ?: return@allprojects + try { + // Find all JARs. + val jarView = config.incoming.artifactView { + attributes { + attribute(org.gradle.api.attributes.Attribute.of("artifactType", String::class.java), "jar") + } + lenient(true) + } + inputs.files(jarView.files) + + // Also find all JARs stored in AARs. + val aarView = config.incoming.artifactView { + attributes { + attribute(org.gradle.api.attributes.Attribute.of("artifactType", String::class.java), "android-classes-jar") + } + lenient(true) + } + inputs.files(aarView.files) + } catch (e: Exception) {} + } + + // Find all the JARs and print their paths. + doLast { + try { + val cp = mutableListOf() + + // JNIgen uses the first version of a class it finds, so the order we list + // the JARs in is important. + val mainProject = allprojects.find { project -> + project.plugins.hasPlugin("com.android.application") + } ?: project + + // Start with the android bootClasspath. This contains things like java.* + // and android.*. + val android = mainProject.extensions.findByName("android") as? com.android.build.gradle.BaseExtension + android?.bootClasspath?.let { file -> cp.addAll(file) } + + // Next, add the main project's JARs, followed by all the other project's + // JARs. + val projects = (listOf(mainProject) + allprojects).distinct() + projects.forEach { project -> + val config = project.configurations.findByName("releaseCompileClasspath") ?: return@forEach + try { + // Add all JARs. + cp.addAll(config.incoming.artifactView { + attributes { + attribute(org.gradle.api.attributes.Attribute.of("artifactType", String::class.java), "jar") + } + lenient(true) + }.files) + + // Add all JARs that were contained in AARs. + cp.addAll(config.incoming.artifactView { + attributes { + attribute(org.gradle.api.attributes.Attribute.of("artifactType", String::class.java), "android-classes-jar") + } + lenient(true) + }.files) + } catch (e: Exception) {} + } + + // Dedupe and print the absolute paths to all the JARs. + cp.map { file -> file.absolutePath }.distinct().forEach { + path -> println(path) + } + } catch (e: Exception) { + System.err.println("Gradle stub cannot find JAR libraries.") + throw e + } + } + System.err.println("If you are seeing this error in `flutter build` output, it is likely that JNIgen left some stubs in the build.gradle file. Please restore that file from your version control system or manually remove the stub functions named getReleaseCompileClasspath and / or getSources.") +} diff --git a/packages/shared_preferences/shared_preferences_android/example/android/settings.gradle.kts b/packages/shared_preferences/shared_preferences_android/example/android/settings.gradle.kts index 575dbbe6c4c6..6e91eeb4b111 100644 --- a/packages/shared_preferences/shared_preferences_android/example/android/settings.gradle.kts +++ b/packages/shared_preferences/shared_preferences_android/example/android/settings.gradle.kts @@ -21,7 +21,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" id("com.android.application") version "9.1.0" apply false - id("org.jetbrains.kotlin.android") version "2.4.0" apply false + id("org.jetbrains.kotlin.android") version "2.1.0" apply false id("com.google.cloud.artifactregistry.gradle-plugin") version "2.2.1" } diff --git a/packages/shared_preferences/shared_preferences_android/example/pubspec.yaml b/packages/shared_preferences/shared_preferences_android/example/pubspec.yaml index e1fad1e9f586..a0dcb06b3b4b 100644 --- a/packages/shared_preferences/shared_preferences_android/example/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_android/example/pubspec.yaml @@ -9,6 +9,7 @@ environment: dependencies: flutter: sdk: flutter + jni: ^1.0.0 shared_preferences_android: # When depending on this package from a real application you should use: # shared_preferences_android: ^x.y.z @@ -23,6 +24,7 @@ dev_dependencies: sdk: flutter integration_test: sdk: flutter + jnigen: ^0.17.0 flutter: uses-material-design: true diff --git a/packages/shared_preferences/shared_preferences_android/lib/src/messages.g.dart b/packages/shared_preferences/shared_preferences_android/lib/src/messages.g.dart index a149654c9cb9..12305da36f8e 100644 --- a/packages/shared_preferences/shared_preferences_android/lib/src/messages.g.dart +++ b/packages/shared_preferences/shared_preferences_android/lib/src/messages.g.dart @@ -1,21 +1,24 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.3.4), do not edit directly. +// Autogenerated from Pigeon (v27.4.0), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: unused_import, unused_shown_name // ignore_for_file: type=lint import 'dart:async'; -import 'dart:typed_data' show Float64List, Int32List, Int64List; +import 'dart:io' show Platform; +import 'dart:typed_data' show Float32List, Float64List, Int32List, Int64List, Int8List, TypedData; import 'package:flutter/services.dart'; +import 'package:jni/jni.dart'; import 'package:meta/meta.dart' show immutable, protected, visibleForTesting; +import './messages.g.jni.dart' as jni_bridge; Object? _extractReplyValueOrThrow( - List? replyList, - String channelName, { - required bool isNullValid, + List? replyList, + String channelName, { + required bool isNullValid, }) { if (replyList == null) { throw PlatformException( @@ -37,6 +40,170 @@ Object? _extractReplyValueOrThrow( return replyList.firstOrNull; } + +class _PigeonJniCodec { + static JObject get _kotlinUnit { + final JClass unitClass = JClass.forName('kotlin/Unit'); + try { + return unitClass + .staticFieldId('INSTANCE', 'Lkotlin/Unit;') + .get(unitClass, JObject.type); + } finally { + unitClass.release(); + } + } + + static Object? readValue(JObject? value) { + if (value == null) { + return null; + } + if (value.isA(JLong.type)) { + return value.as(JLong.type).longValue(); + } else if (value.isA(JDouble.type)) { + return value.as(JDouble.type).doubleValue(); + } else if (value.isA(JString.type)) { + return value.as(JString.type).toDartString(); + } else if (value.isA(JBoolean.type)) { + return value.as(JBoolean.type).booleanValue(); + } else if (value.isA(JByteArray.type)) { + final JByteArray array = value.as(JByteArray.type); + return array.getRange(0, array.length).buffer.asUint8List(); + } else if (value.isA(JIntArray.type)) { + final JIntArray array = value.as(JIntArray.type); + return array.getRange(0, array.length); + } else if (value.isA(JLongArray.type)) { + final JLongArray array = value.as(JLongArray.type); + return array.getRange(0, array.length); + } else if (value.isA(JDoubleArray.type)) { + final JDoubleArray array = value.as(JDoubleArray.type); + return array.getRange(0, array.length); + } else if (value.isA>(JList.type as JType>)) { + final List list = value.as(JList.type).asDart(); + final res = []; + // Cache the length before iterating to avoid a JNI hop per iteration. + final int len = list.length; + for (int i = 0; i < len; i++) { + res.add(readValue(list[i])); + } + return res; + } else if (value.isA>( + JMap.type as JType>)) { + final Map map = + value.as(JMap.type).asDart(); + final res = {}; + for (final MapEntry entry in map.entries) { + res[readValue(entry.key)] = readValue(entry.value); + } + return res; + + + } else { + throw ArgumentError.value(value); + } + } + + static T writeValue(Object? value) { + if (value == null) { + return null as T; + } + if (value is bool) { + return JBoolean(value) as T; + } else if (value is double) { + return JDouble(value) as T; + // ignore: avoid_double_and_int_checks + } else if (value is int) { + return JLong(value) as T; + } else if (value is String) { + return value.toJString() as T; + } else if (value is Uint8List) { + final JByteArray array = JByteArray(value.length); + array.setRange(0, value.length, Int8List.view(value.buffer, value.offsetInBytes, value.length)); + return array as T; + } else if (value is Int32List) { + final JIntArray array = JIntArray(value.length); + array.setRange(0, value.length, value); + return array as T; + } else if (value is Int64List) { + final JLongArray array = JLongArray(value.length); + array.setRange(0, value.length, value); + return array as T; + } else if (value is Float64List) { + final JDoubleArray array = JDoubleArray(value.length); + array.setRange(0, value.length, value); + return array as T; + } else if (value is List) { + return value + .map((e) => writeValue(e)) + .toJList() as T; + + } else if (value is List) { + return value.map((e) => writeValue(e)).toJList() as T; + } else if (value is List) { + return value.map((e) => writeValue(e)).toJList() as T; + } else if (value is Map) { + return value + .map( + (k, v) => MapEntry(writeValue(k), writeValue(v))) + .toJMap() as T; + + } else if (value is Map) { + return value + .map((k, v) => + MapEntry(writeValue(k), writeValue(v))) + .toJMap() as T; + } else if (value is Map) { + return value + .map((k, v) => + MapEntry(writeValue(k), writeValue(v))) + .toJMap() as T; + } else if (value is Map) { + return value + .map((k, v) => + MapEntry(writeValue(k), writeValue(v))) + .toJMap() as T; + + + } else { + throw ArgumentError.value(value); + } + } +} + +bool _isType(Type t) => T == t; +bool _isTypeOrNullableType(Type t) => _isType(t) || _isType(t); + +void _throwNoInstanceError(String channelName) { + String nameString = 'named $channelName'; + if (channelName == defaultInstanceName) { + nameString = 'with no name'; + } + final String error = 'No instance $nameString has been registered.'; + throw ArgumentError(error); +} + +PlatformException _wrapJniException(JThrowable e) { + if (e.isA(jni_bridge.FlutterError.type)) { + final jni_bridge.FlutterError pigeonError = e.as(jni_bridge.FlutterError.type); + return PlatformException( + code: pigeonError.code.toDartString(), + message: pigeonError.message?.toDartString(), + details: pigeonError.details?.isA(JString.type) ?? false + ? pigeonError.details!.as(JString.type).toDartString() + : pigeonError.details, + stacktrace: e.javaStackTrace, + ); + } + return PlatformException( + code: 'PlatformException', + message: e.message, + details: e, + stacktrace: e.javaStackTrace, + ); +} + + + + class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -57,26 +224,202 @@ class _PigeonCodec extends StandardMessageCodec { } } } +const String defaultInstanceName = 'PigeonDefaultClassName32uh4ui3lh445uh4h3l2l455g4y34u'; + +class SharedPreferencesApiForNativeInterop { + SharedPreferencesApiForNativeInterop._withRegistrar({jni_bridge.SharedPreferencesApiRegistrar? jniApi}) : _jniApi = jniApi; + + /// Returns instance of SharedPreferencesApiForNativeInterop with specified [channelName] if one has been registered. + static SharedPreferencesApiForNativeInterop? getInstance({String channelName = defaultInstanceName}) { + final SharedPreferencesApiForNativeInterop res; + if (Platform.isAndroid) { + final jni_bridge.SharedPreferencesApiRegistrar? link = + jni_bridge.SharedPreferencesApiRegistrar().getInstance(channelName.toJString()); + if (link == null) { + _throwNoInstanceError(channelName); + } + res = SharedPreferencesApiForNativeInterop._withRegistrar(jniApi: link); + } else { + throw UnsupportedError('Native Interop is not supported on this platform. Use SharedPreferencesApi instead.'); + } + return res; + } + + late final jni_bridge.SharedPreferencesApiRegistrar? _jniApi; + + bool remove(String key) { + try { + if (_jniApi != null) { + return _jniApi.remove(_PigeonJniCodec.writeValue(key)); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + bool setBool(String key, bool value) { + try { + if (_jniApi != null) { + return _jniApi.setBool(_PigeonJniCodec.writeValue(key), value); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + bool setString(String key, String value) { + try { + if (_jniApi != null) { + return _jniApi.setString(_PigeonJniCodec.writeValue(key), _PigeonJniCodec.writeValue(value)); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + bool setInt(String key, int value) { + try { + if (_jniApi != null) { + return _jniApi.setInt(_PigeonJniCodec.writeValue(key), value); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + bool setDouble(String key, double value) { + try { + if (_jniApi != null) { + return _jniApi.setDouble(_PigeonJniCodec.writeValue(key), value); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + bool setEncodedStringList(String key, String value) { + try { + if (_jniApi != null) { + return _jniApi.setEncodedStringList(_PigeonJniCodec.writeValue(key), _PigeonJniCodec.writeValue(value)); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + bool setDeprecatedStringList(String key, List value) { + try { + if (_jniApi != null) { + return _jniApi.setDeprecatedStringList(_PigeonJniCodec.writeValue(key), _PigeonJniCodec.writeValue>(value)); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + bool clear(String prefix, List? allowList) { + try { + if (_jniApi != null) { + return _jniApi.clear(_PigeonJniCodec.writeValue(prefix), _PigeonJniCodec.writeValue?>(allowList)); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + Map getAll(String prefix, List? allowList) { + try { + if (_jniApi != null) { + final JMap res = _jniApi.getAll(_PigeonJniCodec.writeValue(prefix), _PigeonJniCodec.writeValue?>(allowList)); + final Map dartTypeRes = (_PigeonJniCodec.readValue(res)! as Map).cast(); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + +} class SharedPreferencesApi { - /// Constructor for [SharedPreferencesApi]. The [binaryMessenger] named argument is - /// available for dependency injection. If it is left null, the default + /// Constructor for [SharedPreferencesApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - SharedPreferencesApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) - : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; - final BinaryMessenger? pigeonVar_binaryMessenger; + SharedPreferencesApi({ + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + SharedPreferencesApiForNativeInterop? nativeInteropApi, + }) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : '', + _nativeInteropApi = nativeInteropApi; + + /// Creates an instance of [SharedPreferencesApi] that requests an instance of + /// [SharedPreferencesApiForNativeInterop] from the host platform with a matching instance name + /// to [messageChannelSuffix] or the default instance. + /// + /// Throws [ArgumentError] if no matching instance can be found. + factory SharedPreferencesApi.createWithNativeInteropApi({ + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + }) { + SharedPreferencesApiForNativeInterop? nativeInteropApi; + String nativeInteropApiInstanceName = ''; + if (Platform.isAndroid) { + if (messageChannelSuffix.isEmpty) { + nativeInteropApi = SharedPreferencesApiForNativeInterop.getInstance(); + } else { + nativeInteropApiInstanceName = messageChannelSuffix; + nativeInteropApi = SharedPreferencesApiForNativeInterop.getInstance( + channelName: messageChannelSuffix); + } + } else { + throw UnsupportedError( + 'Native Interop is not supported on this platform. Use the default constructor of SharedPreferencesApi instead.'); + } + if (nativeInteropApi == null) { + throw ArgumentError( + 'No SharedPreferencesApi instance with ${nativeInteropApiInstanceName.isEmpty ? 'no ' : ''} instance name ${nativeInteropApiInstanceName.isNotEmpty ? '"$nativeInteropApiInstanceName" ' : ''}found.'); + } + return SharedPreferencesApi( + binaryMessenger: binaryMessenger, + messageChannelSuffix: messageChannelSuffix, + nativeInteropApi: nativeInteropApi, + ); + } + + final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; + final SharedPreferencesApiForNativeInterop? _nativeInteropApi; + /// Removes property from shared preferences data set. Future remove(String key) async { - final pigeonVar_channelName = - 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.remove$pigeonVar_messageChannelSuffix'; + if (_nativeInteropApi != null) { + return _nativeInteropApi.remove(key); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.remove$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, @@ -86,17 +429,20 @@ class SharedPreferencesApi { final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( - pigeonVar_replyList, - pigeonVar_channelName, - isNullValid: false, - ); + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ) + ; return pigeonVar_replyValue! as bool; } /// Adds property to shared preferences data set of type `bool`. Future setBool(String key, bool value) async { - final pigeonVar_channelName = - 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setBool$pigeonVar_messageChannelSuffix'; + if (_nativeInteropApi != null) { + return _nativeInteropApi.setBool(key, value); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setBool$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, @@ -106,17 +452,20 @@ class SharedPreferencesApi { final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( - pigeonVar_replyList, - pigeonVar_channelName, - isNullValid: false, - ); + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ) + ; return pigeonVar_replyValue! as bool; } /// Adds property to shared preferences data set of type `String`. Future setString(String key, String value) async { - final pigeonVar_channelName = - 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setString$pigeonVar_messageChannelSuffix'; + if (_nativeInteropApi != null) { + return _nativeInteropApi.setString(key, value); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setString$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, @@ -126,17 +475,20 @@ class SharedPreferencesApi { final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( - pigeonVar_replyList, - pigeonVar_channelName, - isNullValid: false, - ); + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ) + ; return pigeonVar_replyValue! as bool; } /// Adds property to shared preferences data set of type `int`. Future setInt(String key, int value) async { - final pigeonVar_channelName = - 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setInt$pigeonVar_messageChannelSuffix'; + if (_nativeInteropApi != null) { + return _nativeInteropApi.setInt(key, value); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setInt$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, @@ -146,17 +498,20 @@ class SharedPreferencesApi { final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( - pigeonVar_replyList, - pigeonVar_channelName, - isNullValid: false, - ); + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ) + ; return pigeonVar_replyValue! as bool; } /// Adds property to shared preferences data set of type `double`. Future setDouble(String key, double value) async { - final pigeonVar_channelName = - 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setDouble$pigeonVar_messageChannelSuffix'; + if (_nativeInteropApi != null) { + return _nativeInteropApi.setDouble(key, value); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setDouble$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, @@ -166,17 +521,20 @@ class SharedPreferencesApi { final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( - pigeonVar_replyList, - pigeonVar_channelName, - isNullValid: false, - ); + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ) + ; return pigeonVar_replyValue! as bool; } /// Adds property to shared preferences data set of type `List`. Future setEncodedStringList(String key, String value) async { - final pigeonVar_channelName = - 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setEncodedStringList$pigeonVar_messageChannelSuffix'; + if (_nativeInteropApi != null) { + return _nativeInteropApi.setEncodedStringList(key, value); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setEncodedStringList$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, @@ -186,10 +544,11 @@ class SharedPreferencesApi { final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( - pigeonVar_replyList, - pigeonVar_channelName, - isNullValid: false, - ); + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ) + ; return pigeonVar_replyValue! as bool; } @@ -197,8 +556,10 @@ class SharedPreferencesApi { /// /// Deprecated, this is only here for testing purposes. Future setDeprecatedStringList(String key, List value) async { - final pigeonVar_channelName = - 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setDeprecatedStringList$pigeonVar_messageChannelSuffix'; + if (_nativeInteropApi != null) { + return _nativeInteropApi.setDeprecatedStringList(key, value); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.setDeprecatedStringList$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, @@ -208,56 +569,57 @@ class SharedPreferencesApi { final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( - pigeonVar_replyList, - pigeonVar_channelName, - isNullValid: false, - ); + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ) + ; return pigeonVar_replyValue! as bool; } /// Removes all properties from shared preferences data set with matching prefix. Future clear(String prefix, List? allowList) async { - final pigeonVar_channelName = - 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.clear$pigeonVar_messageChannelSuffix'; + if (_nativeInteropApi != null) { + return _nativeInteropApi.clear(prefix, allowList); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.clear$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([ - prefix, - allowList, - ]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([prefix, allowList]); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( - pigeonVar_replyList, - pigeonVar_channelName, - isNullValid: false, - ); + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ) + ; return pigeonVar_replyValue! as bool; } /// Gets all properties from shared preferences data set with matching prefix. Future> getAll(String prefix, List? allowList) async { - final pigeonVar_channelName = - 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.getAll$pigeonVar_messageChannelSuffix'; + if (_nativeInteropApi != null) { + return _nativeInteropApi.getAll(prefix, allowList); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.getAll$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([ - prefix, - allowList, - ]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([prefix, allowList]); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( - pigeonVar_replyList, - pigeonVar_channelName, - isNullValid: false, - ); + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ) + ; return (pigeonVar_replyValue! as Map).cast(); } } diff --git a/packages/shared_preferences/shared_preferences_android/lib/src/messages.g.jni.dart b/packages/shared_preferences/shared_preferences_android/lib/src/messages.g.jni.dart new file mode 100644 index 000000000000..25cd2d8f05eb --- /dev/null +++ b/packages/shared_preferences/shared_preferences_android/lib/src/messages.g.jni.dart @@ -0,0 +1,1233 @@ +// AUTO GENERATED BY JNIGEN 0.17.0. DO NOT EDIT! + +// ignore_for_file: annotate_overrides +// ignore_for_file: argument_type_not_assignable +// ignore_for_file: camel_case_extensions +// ignore_for_file: camel_case_types +// ignore_for_file: constant_identifier_names +// ignore_for_file: comment_references +// ignore_for_file: doc_directive_unknown +// ignore_for_file: file_names +// ignore_for_file: inference_failure_on_untyped_parameter +// ignore_for_file: invalid_internal_annotation +// ignore_for_file: invalid_use_of_internal_member +// ignore_for_file: library_prefixes +// ignore_for_file: lines_longer_than_80_chars +// ignore_for_file: no_leading_underscores_for_library_prefixes +// ignore_for_file: no_leading_underscores_for_local_identifiers +// ignore_for_file: non_constant_identifier_names +// ignore_for_file: only_throw_errors +// ignore_for_file: overridden_fields +// ignore_for_file: prefer_double_quotes +// ignore_for_file: unintended_html_in_doc_comment +// ignore_for_file: unnecessary_cast +// ignore_for_file: unnecessary_non_null_assertion +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: unused_element +// ignore_for_file: unused_field +// ignore_for_file: unused_import +// ignore_for_file: unused_local_variable +// ignore_for_file: unused_shown_name +// ignore_for_file: use_super_parameters + +import 'dart:core' as core$_; +import 'dart:core' show Object, String; + +import 'package:jni/_internal.dart' as jni$_; +import 'package:jni/jni.dart' as jni$_; + +const _$jniVersionCheck = jni$_.JniVersionCheck(1, 0); + +/// from: `io.flutter.plugins.sharedpreferences.FlutterError` +extension type FlutterError._(jni$_.JObject _$this) implements RuntimeException { + static final _class = jni$_.JClass.forName(r'io/flutter/plugins/sharedpreferences/FlutterError'); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = $FlutterError$Type$(); + static final _id_new$ = _class.constructorId( + r'(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V', + ); + + static final _new$ = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + (jni$_.Pointer, jni$_.Pointer, jni$_.Pointer) + >, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public void (java.lang.String string, java.lang.String string1, java.lang.Object object)` + /// The returned object must be released after use, by calling the [release] method. + factory FlutterError(jni$_.JString string, jni$_.JString? string1, jni$_.JObject? object) { + final _$$classRef = _class.reference; + final _$string = string.reference; + final _$string1 = string1?.reference ?? jni$_.jNullReference; + final _$object = object?.reference ?? jni$_.jNullReference; + return _new$( + _$$classRef.pointer, + _id_new$.pointer, + _$string.pointer, + _$string1.pointer, + _$object.pointer, + ).object(); + } + + static final _id_new$1 = _class.constructorId( + r'(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V', + ); + + static final _new$1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + ( + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Int32, + jni$_.Pointer, + ) + >, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + core$_.int, + jni$_.Pointer, + ) + >(); + + /// from: `synthetic public void (java.lang.String string, java.lang.String string1, java.lang.Object object, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker)` + /// The returned object must be released after use, by calling the [release] method. + factory FlutterError.new$1( + jni$_.JString? string, + jni$_.JString? string1, + jni$_.JObject? object, + core$_.int i, + DefaultConstructorMarker? defaultConstructorMarker, + ) { + final _$$classRef = _class.reference; + final _$string = string?.reference ?? jni$_.jNullReference; + final _$string1 = string1?.reference ?? jni$_.jNullReference; + final _$object = object?.reference ?? jni$_.jNullReference; + final _$defaultConstructorMarker = defaultConstructorMarker?.reference ?? jni$_.jNullReference; + return _new$1( + _$$classRef.pointer, + _id_new$1.pointer, + _$string.pointer, + _$string1.pointer, + _$object.pointer, + i, + _$defaultConstructorMarker.pointer, + ).object(); + } +} + +extension FlutterError$$Methods on FlutterError { + static final _id_get$code = FlutterError._class.instanceMethodId( + r'getCode', + r'()Ljava/lang/String;', + ); + + static final _get$code = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public final java.lang.String getCode()` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString get code { + final _$$selfRef = reference; + return _get$code(_$$selfRef.pointer, _id_get$code.pointer).object(); + } + + static final _id_get$message = FlutterError._class.instanceMethodId( + r'getMessage', + r'()Ljava/lang/String;', + ); + + static final _get$message = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public java.lang.String getMessage()` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString? get message { + final _$$selfRef = reference; + return _get$message(_$$selfRef.pointer, _id_get$message.pointer).object(); + } + + static final _id_get$details = FlutterError._class.instanceMethodId( + r'getDetails', + r'()Ljava/lang/Object;', + ); + + static final _get$details = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public final java.lang.Object getDetails()` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JObject? get details { + final _$$selfRef = reference; + return _get$details(_$$selfRef.pointer, _id_get$details.pointer).object(); + } +} + +final class $FlutterError$Type$ extends jni$_.JType { + @jni$_.internal + const $FlutterError$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lio/flutter/plugins/sharedpreferences/FlutterError;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.SharedPreferencesApi` +extension type SharedPreferencesApi._(jni$_.JObject _$this) implements jni$_.JObject { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/SharedPreferencesApi', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = $SharedPreferencesApi$Type$(); + + /// Maps a specific port to the implemented interface. + static final core$_.Map _$impls = {}; + static jni$_.JObjectPtr _$invoke( + core$_.int port, + jni$_.JObjectPtr descriptor, + jni$_.JObjectPtr args, + ) { + return _$invokeMethod( + port, + jni$_.MethodInvocation.fromAddresses(0, descriptor.address, args.address), + ); + } + + static final jni$_.Pointer< + jni$_.NativeFunction + > + _$invokePointer = jni$_.Pointer.fromFunction(_$invoke); + + static jni$_.Pointer _$invokeMethod(core$_.int $p, jni$_.MethodInvocation $i) { + try { + final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); + final $a = $i.args; + if ($d == r'remove(Ljava/lang/String;)Z') { + final $r = _$impls[$p]!.remove(($a![0] as jni$_.JString)); + return $r.toJBoolean().reference.toPointer(); + } + if ($d == r'setBool(Ljava/lang/String;Z)Z') { + final $r = _$impls[$p]!.setBool( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JBoolean).toDartBool(releaseOriginal: true), + ); + return $r.toJBoolean().reference.toPointer(); + } + if ($d == r'setString(Ljava/lang/String;Ljava/lang/String;)Z') { + final $r = _$impls[$p]!.setString(($a![0] as jni$_.JString), ($a![1] as jni$_.JString)); + return $r.toJBoolean().reference.toPointer(); + } + if ($d == r'setInt(Ljava/lang/String;J)Z') { + final $r = _$impls[$p]!.setInt( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JLong).toDartInt(releaseOriginal: true), + ); + return $r.toJBoolean().reference.toPointer(); + } + if ($d == r'setDouble(Ljava/lang/String;D)Z') { + final $r = _$impls[$p]!.setDouble( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JDouble).toDartDouble(releaseOriginal: true), + ); + return $r.toJBoolean().reference.toPointer(); + } + if ($d == r'setEncodedStringList(Ljava/lang/String;Ljava/lang/String;)Z') { + final $r = _$impls[$p]!.setEncodedStringList( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JString), + ); + return $r.toJBoolean().reference.toPointer(); + } + if ($d == r'setDeprecatedStringList(Ljava/lang/String;Ljava/util/List;)Z') { + final $r = _$impls[$p]!.setDeprecatedStringList( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JList), + ); + return $r.toJBoolean().reference.toPointer(); + } + if ($d == r'clear(Ljava/lang/String;Ljava/util/List;)Z') { + final $r = _$impls[$p]!.clear( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JList?), + ); + return $r.toJBoolean().reference.toPointer(); + } + if ($d == r'getAll(Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;') { + final $r = _$impls[$p]!.getAll( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JList?), + ); + return ($r as jni$_.JObject?)?.as(const jni$_.$JObject$Type$()).reference.toPointer() ?? + jni$_.nullptr; + } + } catch (e) { + return jni$_.ProtectedJniExtensions.newDartException(e); + } + return jni$_.nullptr; + } + + static void implementIn(jni$_.JImplementer implementer, $SharedPreferencesApi $impl) { + late final jni$_.RawReceivePort $p; + $p = jni$_.RawReceivePort(($m) { + if ($m == null) { + _$impls.remove($p.sendPort.nativePort); + $p.close(); + return; + } + final $i = jni$_.MethodInvocation.fromMessage($m); + final $r = _$invokeMethod($p.sendPort.nativePort, $i); + $i.args?.release(); + jni$_.ProtectedJniExtensions.returnResult($i.result, $r); + }); + implementer.add( + r'io.flutter.plugins.sharedpreferences.SharedPreferencesApi', + $p, + _$invokePointer, + [], + ); + final $a = $p.sendPort.nativePort; + _$impls[$a] = $impl; + } + + factory SharedPreferencesApi.implement($SharedPreferencesApi $impl) { + final $i = jni$_.JImplementer(); + implementIn($i, $impl); + return $i.implement(); + } +} + +extension SharedPreferencesApi$$Methods on SharedPreferencesApi { + static final _id_remove = SharedPreferencesApi._class.instanceMethodId( + r'remove', + r'(Ljava/lang/String;)Z', + ); + + static final _remove = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `public fun remove(key: kotlin.String): kotlin.Boolean` + core$_.bool remove(jni$_.JString string) { + final _$$selfRef = reference; + final _$string = string.reference; + return _remove(_$$selfRef.pointer, _id_remove.pointer, _$string.pointer).boolean; + } + + static final _id_setBool = SharedPreferencesApi._class.instanceMethodId( + r'setBool', + r'(Ljava/lang/String;Z)Z', + ); + + static final _setBool = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int32)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + ) + >(); + + /// from: `public fun setBool(key: kotlin.String, value: kotlin.Boolean): kotlin.Boolean` + core$_.bool setBool(jni$_.JString string, core$_.bool z) { + final _$$selfRef = reference; + final _$string = string.reference; + return _setBool(_$$selfRef.pointer, _id_setBool.pointer, _$string.pointer, z ? 1 : 0).boolean; + } + + static final _id_setString = SharedPreferencesApi._class.instanceMethodId( + r'setString', + r'(Ljava/lang/String;Ljava/lang/String;)Z', + ); + + static final _setString = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setString(key: kotlin.String, value: kotlin.String): kotlin.Boolean` + core$_.bool setString(jni$_.JString string, jni$_.JString string1) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$string1 = string1.reference; + return _setString( + _$$selfRef.pointer, + _id_setString.pointer, + _$string.pointer, + _$string1.pointer, + ).boolean; + } + + static final _id_setInt = SharedPreferencesApi._class.instanceMethodId( + r'setInt', + r'(Ljava/lang/String;J)Z', + ); + + static final _setInt = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int64)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + ) + >(); + + /// from: `public fun setInt(key: kotlin.String, value: kotlin.Long): kotlin.Boolean` + core$_.bool setInt(jni$_.JString string, core$_.int j) { + final _$$selfRef = reference; + final _$string = string.reference; + return _setInt(_$$selfRef.pointer, _id_setInt.pointer, _$string.pointer, j).boolean; + } + + static final _id_setDouble = SharedPreferencesApi._class.instanceMethodId( + r'setDouble', + r'(Ljava/lang/String;D)Z', + ); + + static final _setDouble = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Double)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.double, + ) + >(); + + /// from: `public fun setDouble(key: kotlin.String, value: kotlin.Double): kotlin.Boolean` + core$_.bool setDouble(jni$_.JString string, core$_.double d) { + final _$$selfRef = reference; + final _$string = string.reference; + return _setDouble(_$$selfRef.pointer, _id_setDouble.pointer, _$string.pointer, d).boolean; + } + + static final _id_setEncodedStringList = SharedPreferencesApi._class.instanceMethodId( + r'setEncodedStringList', + r'(Ljava/lang/String;Ljava/lang/String;)Z', + ); + + static final _setEncodedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setEncodedStringList(key: kotlin.String, value: kotlin.String): kotlin.Boolean` + core$_.bool setEncodedStringList(jni$_.JString string, jni$_.JString string1) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$string1 = string1.reference; + return _setEncodedStringList( + _$$selfRef.pointer, + _id_setEncodedStringList.pointer, + _$string.pointer, + _$string1.pointer, + ).boolean; + } + + static final _id_setDeprecatedStringList = SharedPreferencesApi._class.instanceMethodId( + r'setDeprecatedStringList', + r'(Ljava/lang/String;Ljava/util/List;)Z', + ); + + static final _setDeprecatedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setDeprecatedStringList(key: kotlin.String, value: kotlin.collections.List): kotlin.Boolean` + core$_.bool setDeprecatedStringList(jni$_.JString string, jni$_.JList list) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$list = list.reference; + return _setDeprecatedStringList( + _$$selfRef.pointer, + _id_setDeprecatedStringList.pointer, + _$string.pointer, + _$list.pointer, + ).boolean; + } + + static final _id_clear = SharedPreferencesApi._class.instanceMethodId( + r'clear', + r'(Ljava/lang/String;Ljava/util/List;)Z', + ); + + static final _clear = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun clear(prefix: kotlin.String, allowList: kotlin.collections.List?): kotlin.Boolean` + core$_.bool clear(jni$_.JString string, jni$_.JList? list) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$list = list?.reference ?? jni$_.jNullReference; + return _clear(_$$selfRef.pointer, _id_clear.pointer, _$string.pointer, _$list.pointer).boolean; + } + + static final _id_getAll = SharedPreferencesApi._class.instanceMethodId( + r'getAll', + r'(Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;', + ); + + static final _getAll = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getAll(prefix: kotlin.String, allowList: kotlin.collections.List?): kotlin.collections.Map` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JMap getAll( + jni$_.JString string, + jni$_.JList? list, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$list = list?.reference ?? jni$_.jNullReference; + return _getAll( + _$$selfRef.pointer, + _id_getAll.pointer, + _$string.pointer, + _$list.pointer, + ).object>(); + } +} + +abstract base mixin class $SharedPreferencesApi { + factory $SharedPreferencesApi({ + required core$_.bool Function(jni$_.JString string) remove, + required core$_.bool Function(jni$_.JString string, core$_.bool z) setBool, + required core$_.bool Function(jni$_.JString string, jni$_.JString string1) setString, + required core$_.bool Function(jni$_.JString string, core$_.int j) setInt, + required core$_.bool Function(jni$_.JString string, core$_.double d) setDouble, + required core$_.bool Function(jni$_.JString string, jni$_.JString string1) setEncodedStringList, + required core$_.bool Function(jni$_.JString string, jni$_.JList list) + setDeprecatedStringList, + required core$_.bool Function(jni$_.JString string, jni$_.JList? list) clear, + required jni$_.JMap Function( + jni$_.JString string, + jni$_.JList? list, + ) + getAll, + }) = _$SharedPreferencesApi; + + core$_.bool remove(jni$_.JString string); + core$_.bool setBool(jni$_.JString string, core$_.bool z); + core$_.bool setString(jni$_.JString string, jni$_.JString string1); + core$_.bool setInt(jni$_.JString string, core$_.int j); + core$_.bool setDouble(jni$_.JString string, core$_.double d); + core$_.bool setEncodedStringList(jni$_.JString string, jni$_.JString string1); + core$_.bool setDeprecatedStringList(jni$_.JString string, jni$_.JList list); + core$_.bool clear(jni$_.JString string, jni$_.JList? list); + jni$_.JMap getAll( + jni$_.JString string, + jni$_.JList? list, + ); +} + +final class _$SharedPreferencesApi with $SharedPreferencesApi { + _$SharedPreferencesApi({ + required core$_.bool Function(jni$_.JString string) remove, + required core$_.bool Function(jni$_.JString string, core$_.bool z) setBool, + required core$_.bool Function(jni$_.JString string, jni$_.JString string1) setString, + required core$_.bool Function(jni$_.JString string, core$_.int j) setInt, + required core$_.bool Function(jni$_.JString string, core$_.double d) setDouble, + required core$_.bool Function(jni$_.JString string, jni$_.JString string1) setEncodedStringList, + required core$_.bool Function(jni$_.JString string, jni$_.JList list) + setDeprecatedStringList, + required core$_.bool Function(jni$_.JString string, jni$_.JList? list) clear, + required jni$_.JMap Function( + jni$_.JString string, + jni$_.JList? list, + ) + getAll, + }) : _remove = remove, + _setBool = setBool, + _setString = setString, + _setInt = setInt, + _setDouble = setDouble, + _setEncodedStringList = setEncodedStringList, + _setDeprecatedStringList = setDeprecatedStringList, + _clear = clear, + _getAll = getAll; + + final core$_.bool Function(jni$_.JString string) _remove; + final core$_.bool Function(jni$_.JString string, core$_.bool z) _setBool; + final core$_.bool Function(jni$_.JString string, jni$_.JString string1) _setString; + final core$_.bool Function(jni$_.JString string, core$_.int j) _setInt; + final core$_.bool Function(jni$_.JString string, core$_.double d) _setDouble; + final core$_.bool Function(jni$_.JString string, jni$_.JString string1) _setEncodedStringList; + final core$_.bool Function(jni$_.JString string, jni$_.JList list) + _setDeprecatedStringList; + final core$_.bool Function(jni$_.JString string, jni$_.JList? list) _clear; + final jni$_.JMap Function( + jni$_.JString string, + jni$_.JList? list, + ) + _getAll; + + core$_.bool remove(jni$_.JString string) { + return _remove(string); + } + + core$_.bool setBool(jni$_.JString string, core$_.bool z) { + return _setBool(string, z); + } + + core$_.bool setString(jni$_.JString string, jni$_.JString string1) { + return _setString(string, string1); + } + + core$_.bool setInt(jni$_.JString string, core$_.int j) { + return _setInt(string, j); + } + + core$_.bool setDouble(jni$_.JString string, core$_.double d) { + return _setDouble(string, d); + } + + core$_.bool setEncodedStringList(jni$_.JString string, jni$_.JString string1) { + return _setEncodedStringList(string, string1); + } + + core$_.bool setDeprecatedStringList(jni$_.JString string, jni$_.JList list) { + return _setDeprecatedStringList(string, list); + } + + core$_.bool clear(jni$_.JString string, jni$_.JList? list) { + return _clear(string, list); + } + + jni$_.JMap getAll( + jni$_.JString string, + jni$_.JList? list, + ) { + return _getAll(string, list); + } +} + +final class $SharedPreferencesApi$Type$ extends jni$_.JType { + @jni$_.internal + const $SharedPreferencesApi$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lio/flutter/plugins/sharedpreferences/SharedPreferencesApi;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.SharedPreferencesApiRegistrar` +extension type SharedPreferencesApiRegistrar._(jni$_.JObject _$this) + implements jni$_.JObject, SharedPreferencesApi { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/SharedPreferencesApiRegistrar', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = + $SharedPreferencesApiRegistrar$Type$(); + static final _id_new$ = _class.constructorId(r'()V'); + + static final _new$ = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_NewObject') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public void ()` + /// The returned object must be released after use, by calling the [release] method. + factory SharedPreferencesApiRegistrar() { + final _$$classRef = _class.reference; + return _new$(_$$classRef.pointer, _id_new$.pointer).object(); + } +} + +extension SharedPreferencesApiRegistrar$$Methods on SharedPreferencesApiRegistrar { + static final _id_register = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'register', + r'(Lio/flutter/plugins/sharedpreferences/SharedPreferencesApi;Ljava/lang/String;)Lio/flutter/plugins/sharedpreferences/SharedPreferencesApiRegistrar;', + ); + + static final _register = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun register(api: io.flutter.plugins.sharedpreferences.SharedPreferencesApi?, name: kotlin.String): io.flutter.plugins.sharedpreferences.SharedPreferencesApiRegistrar` + /// The returned object must be released after use, by calling the [release] method. + SharedPreferencesApiRegistrar register( + SharedPreferencesApi? sharedPreferencesApi, + jni$_.JString string, + ) { + final _$$selfRef = reference; + final _$sharedPreferencesApi = sharedPreferencesApi?.reference ?? jni$_.jNullReference; + final _$string = string.reference; + return _register( + _$$selfRef.pointer, + _id_register.pointer, + _$sharedPreferencesApi.pointer, + _$string.pointer, + ).object(); + } + + static final _id_getInstance = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'getInstance', + r'(Ljava/lang/String;)Lio/flutter/plugins/sharedpreferences/SharedPreferencesApiRegistrar;', + ); + + static final _getInstance = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getInstance(name: kotlin.String): io.flutter.plugins.sharedpreferences.SharedPreferencesApiRegistrar?` + /// The returned object must be released after use, by calling the [release] method. + SharedPreferencesApiRegistrar? getInstance(jni$_.JString string) { + final _$$selfRef = reference; + final _$string = string.reference; + return _getInstance( + _$$selfRef.pointer, + _id_getInstance.pointer, + _$string.pointer, + ).object(); + } + + static final _id_remove = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'remove', + r'(Ljava/lang/String;)Z', + ); + + static final _remove = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `public fun remove(key: kotlin.String): kotlin.Boolean` + core$_.bool remove(jni$_.JString string) { + final _$$selfRef = reference; + final _$string = string.reference; + return _remove(_$$selfRef.pointer, _id_remove.pointer, _$string.pointer).boolean; + } + + static final _id_setBool = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'setBool', + r'(Ljava/lang/String;Z)Z', + ); + + static final _setBool = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int32)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + ) + >(); + + /// from: `public fun setBool(key: kotlin.String, value: kotlin.Boolean): kotlin.Boolean` + core$_.bool setBool(jni$_.JString string, core$_.bool z) { + final _$$selfRef = reference; + final _$string = string.reference; + return _setBool(_$$selfRef.pointer, _id_setBool.pointer, _$string.pointer, z ? 1 : 0).boolean; + } + + static final _id_setString = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'setString', + r'(Ljava/lang/String;Ljava/lang/String;)Z', + ); + + static final _setString = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setString(key: kotlin.String, value: kotlin.String): kotlin.Boolean` + core$_.bool setString(jni$_.JString string, jni$_.JString string1) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$string1 = string1.reference; + return _setString( + _$$selfRef.pointer, + _id_setString.pointer, + _$string.pointer, + _$string1.pointer, + ).boolean; + } + + static final _id_setInt = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'setInt', + r'(Ljava/lang/String;J)Z', + ); + + static final _setInt = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int64)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + ) + >(); + + /// from: `public fun setInt(key: kotlin.String, value: kotlin.Long): kotlin.Boolean` + core$_.bool setInt(jni$_.JString string, core$_.int j) { + final _$$selfRef = reference; + final _$string = string.reference; + return _setInt(_$$selfRef.pointer, _id_setInt.pointer, _$string.pointer, j).boolean; + } + + static final _id_setDouble = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'setDouble', + r'(Ljava/lang/String;D)Z', + ); + + static final _setDouble = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Double)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.double, + ) + >(); + + /// from: `public fun setDouble(key: kotlin.String, value: kotlin.Double): kotlin.Boolean` + core$_.bool setDouble(jni$_.JString string, core$_.double d) { + final _$$selfRef = reference; + final _$string = string.reference; + return _setDouble(_$$selfRef.pointer, _id_setDouble.pointer, _$string.pointer, d).boolean; + } + + static final _id_setEncodedStringList = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'setEncodedStringList', + r'(Ljava/lang/String;Ljava/lang/String;)Z', + ); + + static final _setEncodedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setEncodedStringList(key: kotlin.String, value: kotlin.String): kotlin.Boolean` + core$_.bool setEncodedStringList(jni$_.JString string, jni$_.JString string1) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$string1 = string1.reference; + return _setEncodedStringList( + _$$selfRef.pointer, + _id_setEncodedStringList.pointer, + _$string.pointer, + _$string1.pointer, + ).boolean; + } + + static final _id_setDeprecatedStringList = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'setDeprecatedStringList', + r'(Ljava/lang/String;Ljava/util/List;)Z', + ); + + static final _setDeprecatedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setDeprecatedStringList(key: kotlin.String, value: kotlin.collections.List): kotlin.Boolean` + core$_.bool setDeprecatedStringList(jni$_.JString string, jni$_.JList list) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$list = list.reference; + return _setDeprecatedStringList( + _$$selfRef.pointer, + _id_setDeprecatedStringList.pointer, + _$string.pointer, + _$list.pointer, + ).boolean; + } + + static final _id_clear = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'clear', + r'(Ljava/lang/String;Ljava/util/List;)Z', + ); + + static final _clear = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun clear(prefix: kotlin.String, allowList: kotlin.collections.List?): kotlin.Boolean` + core$_.bool clear(jni$_.JString string, jni$_.JList? list) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$list = list?.reference ?? jni$_.jNullReference; + return _clear(_$$selfRef.pointer, _id_clear.pointer, _$string.pointer, _$list.pointer).boolean; + } + + static final _id_getAll = SharedPreferencesApiRegistrar._class.instanceMethodId( + r'getAll', + r'(Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;', + ); + + static final _getAll = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getAll(prefix: kotlin.String, allowList: kotlin.collections.List?): kotlin.collections.Map` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JMap getAll( + jni$_.JString string, + jni$_.JList? list, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$list = list?.reference ?? jni$_.jNullReference; + return _getAll( + _$$selfRef.pointer, + _id_getAll.pointer, + _$string.pointer, + _$list.pointer, + ).object>(); + } +} + +final class $SharedPreferencesApiRegistrar$Type$ + extends jni$_.JType { + @jni$_.internal + const $SharedPreferencesApiRegistrar$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lio/flutter/plugins/sharedpreferences/SharedPreferencesApiRegistrar;'; +} + +/// from: `java.lang.RuntimeException` +/// +/// WARNING: RuntimeException is a stub. To generate bindings for this class, include +/// java.lang.RuntimeException in your config's classes list. +/// +extension type RuntimeException._(jni$_.JObject _$this) implements jni$_.JObject { + static const jni$_.JType type = $RuntimeException$Type$(); +} + +final class $RuntimeException$Type$ extends jni$_.JType { + @jni$_.internal + const $RuntimeException$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Ljava/lang/RuntimeException;'; +} + +/// from: `kotlin.jvm.internal.DefaultConstructorMarker` +/// +/// WARNING: DefaultConstructorMarker is a stub. To generate bindings for this class, include +/// kotlin.jvm.internal.DefaultConstructorMarker in your config's classes list. +/// +extension type DefaultConstructorMarker._(jni$_.JObject _$this) implements jni$_.JObject { + static const jni$_.JType type = $DefaultConstructorMarker$Type$(); +} + +final class $DefaultConstructorMarker$Type$ extends jni$_.JType { + @jni$_.internal + const $DefaultConstructorMarker$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lkotlin/jvm/internal/DefaultConstructorMarker;'; +} diff --git a/packages/shared_preferences/shared_preferences_android/lib/src/messages_async.g.dart b/packages/shared_preferences/shared_preferences_android/lib/src/messages_async.g.dart index 91bb6b5960ff..ac96a5700f38 100644 --- a/packages/shared_preferences/shared_preferences_android/lib/src/messages_async.g.dart +++ b/packages/shared_preferences/shared_preferences_android/lib/src/messages_async.g.dart @@ -1,16 +1,19 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.3.4), do not edit directly. +// Autogenerated from Pigeon (v27.4.0), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: unused_import, unused_shown_name // ignore_for_file: type=lint import 'dart:async'; -import 'dart:typed_data' show Float64List, Int32List, Int64List; +import 'dart:io' show Platform; +import 'dart:typed_data' show Float32List, Float64List, Int32List, Int64List, Int8List, TypedData; import 'package:flutter/services.dart'; +import 'package:jni/jni.dart'; import 'package:meta/meta.dart' show immutable, protected, visibleForTesting; +import './messages_async.g.jni.dart' as jni_bridge; Object? _extractReplyValueOrThrow( List? replyList, @@ -98,6 +101,188 @@ int _deepHash(Object? value) { return value.hashCode; } +class _PigeonJniCodec { + static JObject get _kotlinUnit { + final JClass unitClass = JClass.forName('kotlin/Unit'); + try { + return unitClass.staticFieldId('INSTANCE', 'Lkotlin/Unit;').get(unitClass, JObject.type); + } finally { + unitClass.release(); + } + } + + static Object? readValue(JObject? value) { + if (value == null) { + return null; + } + if (value.isA(JLong.type)) { + return value.as(JLong.type).longValue(); + } else if (value.isA(JDouble.type)) { + return value.as(JDouble.type).doubleValue(); + } else if (value.isA(JString.type)) { + return value.as(JString.type).toDartString(); + } else if (value.isA(JBoolean.type)) { + return value.as(JBoolean.type).booleanValue(); + } else if (value.isA(JByteArray.type)) { + final JByteArray array = value.as(JByteArray.type); + return array.getRange(0, array.length).buffer.asUint8List(); + } else if (value.isA(JIntArray.type)) { + final JIntArray array = value.as(JIntArray.type); + return array.getRange(0, array.length); + } else if (value.isA(JLongArray.type)) { + final JLongArray array = value.as(JLongArray.type); + return array.getRange(0, array.length); + } else if (value.isA(JDoubleArray.type)) { + final JDoubleArray array = value.as(JDoubleArray.type); + return array.getRange(0, array.length); + } else if (value.isA>(JList.type as JType>)) { + final List list = value.as(JList.type).asDart(); + final res = []; + // Cache the length before iterating to avoid a JNI hop per iteration. + final int len = list.length; + for (int i = 0; i < len; i++) { + res.add(readValue(list[i])); + } + return res; + } else if (value.isA>(JMap.type as JType>)) { + final Map map = value.as(JMap.type).asDart(); + final res = {}; + for (final MapEntry entry in map.entries) { + res[readValue(entry.key)] = readValue(entry.value); + } + return res; + } else if (value.isA( + jni_bridge.SharedPreferencesPigeonOptions.type, + )) { + return SharedPreferencesPigeonOptions.fromJni( + value.as(jni_bridge.SharedPreferencesPigeonOptions.type), + ); + } else if (value.isA(jni_bridge.StringListResult.type)) { + return StringListResult.fromJni(value.as(jni_bridge.StringListResult.type)); + } else if (value.isA( + jni_bridge.StringListLookupResultType.type, + )) { + return StringListLookupResultType.fromJni( + value.as(jni_bridge.StringListLookupResultType.type), + ); + } else { + throw ArgumentError.value(value); + } + } + + static T writeValue(Object? value) { + if (value == null) { + return null as T; + } + if (value is bool) { + return JBoolean(value) as T; + } else if (value is double) { + return JDouble(value) as T; + // ignore: avoid_double_and_int_checks + } else if (value is int) { + return JLong(value) as T; + } else if (value is String) { + return value.toJString() as T; + } else if (value is Uint8List) { + final JByteArray array = JByteArray(value.length); + array.setRange( + 0, + value.length, + Int8List.view(value.buffer, value.offsetInBytes, value.length), + ); + return array as T; + } else if (value is Int32List) { + final JIntArray array = JIntArray(value.length); + array.setRange(0, value.length, value); + return array as T; + } else if (value is Int64List) { + final JLongArray array = JLongArray(value.length); + array.setRange(0, value.length, value); + return array as T; + } else if (value is Float64List) { + final JDoubleArray array = JDoubleArray(value.length); + array.setRange(0, value.length, value); + return array as T; + } else if (value is List) { + return value.map((e) => writeValue(e)).toJList() as T; + } else if (value is List) { + return value.map((e) => writeValue(e)).toJList() as T; + } else if (value is List) { + return value.map((e) => writeValue(e)).toJList() as T; + } else if (value is Map) { + return value + .map( + (k, v) => MapEntry(writeValue(k), writeValue(v)), + ) + .toJMap() + as T; + } else if (value is Map) { + return value + .map( + (k, v) => MapEntry(writeValue(k), writeValue(v)), + ) + .toJMap() + as T; + } else if (value is Map) { + return value + .map( + (k, v) => MapEntry(writeValue(k), writeValue(v)), + ) + .toJMap() + as T; + } else if (value is Map) { + return value + .map( + (k, v) => MapEntry(writeValue(k), writeValue(v)), + ) + .toJMap() + as T; + } else if (value is SharedPreferencesPigeonOptions) { + return value.toJni() as T; + } else if (value is StringListResult) { + return value.toJni() as T; + } else if (value is StringListLookupResultType) { + return value.toJni() as T; + } else { + throw ArgumentError.value(value); + } + } +} + +bool _isType(Type t) => T == t; +bool _isTypeOrNullableType(Type t) => _isType(t) || _isType(t); + +void _throwNoInstanceError(String channelName) { + String nameString = 'named $channelName'; + if (channelName == defaultInstanceName) { + nameString = 'with no name'; + } + final String error = 'No instance $nameString has been registered.'; + throw ArgumentError(error); +} + +PlatformException _wrapJniException(JThrowable e) { + if (e.isA(jni_bridge.SharedPreferencesError.type)) { + final jni_bridge.SharedPreferencesError pigeonError = e.as( + jni_bridge.SharedPreferencesError.type, + ); + return PlatformException( + code: pigeonError.code.toDartString(), + message: pigeonError.message?.toDartString(), + details: pigeonError.details?.isA(JString.type) ?? false + ? pigeonError.details!.as(JString.type).toDartString() + : pigeonError.details, + stacktrace: e.javaStackTrace, + ); + } + return PlatformException( + code: 'PlatformException', + message: e.message, + details: e, + stacktrace: e.javaStackTrace, + ); +} + /// Possible types found during a getStringList call. enum StringListLookupResultType { /// A deprecated platform-side encoding string list. @@ -107,7 +292,15 @@ enum StringListLookupResultType { jsonEncoded, /// A string that doesn't have the expected encoding prefix. - unexpectedString, + unexpectedString; + + jni_bridge.StringListLookupResultType toJni() { + return jni_bridge.StringListLookupResultType.Companion.ofRaw(index)!; + } + + static StringListLookupResultType? fromJni(jni_bridge.StringListLookupResultType? jniEnum) { + return jniEnum == null ? null : StringListLookupResultType.values[jniEnum.raw]; + } } class SharedPreferencesPigeonOptions { @@ -121,10 +314,28 @@ class SharedPreferencesPigeonOptions { return [fileName, useDataStore]; } + jni_bridge.SharedPreferencesPigeonOptions toJni() { + return jni_bridge.SharedPreferencesPigeonOptions( + _PigeonJniCodec.writeValue(fileName), + useDataStore, + ); + } + Object encode() { return _toList(); } + static SharedPreferencesPigeonOptions? fromJni( + jni_bridge.SharedPreferencesPigeonOptions? jniClass, + ) { + return jniClass == null + ? null + : SharedPreferencesPigeonOptions( + fileName: jniClass.fileName?.toDartString(releaseOriginal: true), + useDataStore: jniClass.useDataStore, + ); + } + static SharedPreferencesPigeonOptions decode(Object result) { result as List; return SharedPreferencesPigeonOptions( @@ -148,6 +359,11 @@ class SharedPreferencesPigeonOptions { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); + + @override + String toString() { + return 'SharedPreferencesPigeonOptions(fileName: $fileName, useDataStore: $useDataStore)'; + } } class StringListResult { @@ -163,10 +379,26 @@ class StringListResult { return [jsonEncodedValue, type]; } + jni_bridge.StringListResult toJni() { + return jni_bridge.StringListResult( + _PigeonJniCodec.writeValue(jsonEncodedValue), + type.toJni(), + ); + } + Object encode() { return _toList(); } + static StringListResult? fromJni(jni_bridge.StringListResult? jniClass) { + return jniClass == null + ? null + : StringListResult( + jsonEncodedValue: jniClass.jsonEncodedValue?.toDartString(releaseOriginal: true), + type: StringListLookupResultType.fromJni(jniClass.type$1)!, + ); + } + static StringListResult decode(Object result) { result as List; return StringListResult( @@ -190,6 +422,11 @@ class StringListResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => _deepHash([runtimeType, ..._toList()]); + + @override + String toString() { + return 'StringListResult(jsonEncodedValue: $jsonEncodedValue, type: $type)'; + } } class _PigeonCodec extends StandardMessageCodec { @@ -229,23 +466,341 @@ class _PigeonCodec extends StandardMessageCodec { } } +const String defaultInstanceName = 'PigeonDefaultClassName32uh4ui3lh445uh4h3l2l455g4y34u'; + +class SharedPreferencesAsyncApiForNativeInterop { + SharedPreferencesAsyncApiForNativeInterop._withRegistrar({ + jni_bridge.SharedPreferencesAsyncApiRegistrar? jniApi, + }) : _jniApi = jniApi; + + /// Returns instance of SharedPreferencesAsyncApiForNativeInterop with specified [channelName] if one has been registered. + static SharedPreferencesAsyncApiForNativeInterop? getInstance({ + String channelName = defaultInstanceName, + }) { + final SharedPreferencesAsyncApiForNativeInterop res; + if (Platform.isAndroid) { + final jni_bridge.SharedPreferencesAsyncApiRegistrar? link = + jni_bridge.SharedPreferencesAsyncApiRegistrar().getInstance(channelName.toJString()); + if (link == null) { + _throwNoInstanceError(channelName); + } + res = SharedPreferencesAsyncApiForNativeInterop._withRegistrar(jniApi: link); + } else { + throw UnsupportedError( + 'Native Interop is not supported on this platform. Use SharedPreferencesAsyncApi instead.', + ); + } + return res; + } + + late final jni_bridge.SharedPreferencesAsyncApiRegistrar? _jniApi; + + void setBool(String key, bool value, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + return _jniApi.setBool(_PigeonJniCodec.writeValue(key), value, options.toJni()); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + void setString(String key, String value, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + return _jniApi.setString( + _PigeonJniCodec.writeValue(key), + _PigeonJniCodec.writeValue(value), + options.toJni(), + ); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + void setInt(String key, int value, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + return _jniApi.setInt(_PigeonJniCodec.writeValue(key), value, options.toJni()); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + void setDouble(String key, double value, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + return _jniApi.setDouble(_PigeonJniCodec.writeValue(key), value, options.toJni()); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + void setEncodedStringList(String key, String value, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + return _jniApi.setEncodedStringList( + _PigeonJniCodec.writeValue(key), + _PigeonJniCodec.writeValue(value), + options.toJni(), + ); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + void setDeprecatedStringList( + String key, + List value, + SharedPreferencesPigeonOptions options, + ) { + try { + if (_jniApi != null) { + return _jniApi.setDeprecatedStringList( + _PigeonJniCodec.writeValue(key), + _PigeonJniCodec.writeValue>(value), + options.toJni(), + ); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + String? getString(String key, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + final JString? res = _jniApi.getString( + _PigeonJniCodec.writeValue(key), + options.toJni(), + ); + final String? dartTypeRes = res?.toDartString(releaseOriginal: true); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + bool? getBool(String key, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + final JBoolean? res = _jniApi.getBool( + _PigeonJniCodec.writeValue(key), + options.toJni(), + ); + final bool? dartTypeRes = res?.toDartBool(releaseOriginal: true); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + double? getDouble(String key, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + final JDouble? res = _jniApi.getDouble( + _PigeonJniCodec.writeValue(key), + options.toJni(), + ); + final double? dartTypeRes = res?.toDartDouble(releaseOriginal: true); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + int? getInt(String key, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + final JLong? res = _jniApi.getInt( + _PigeonJniCodec.writeValue(key), + options.toJni(), + ); + final int? dartTypeRes = res?.toDartInt(releaseOriginal: true); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + List? getPlatformEncodedStringList(String key, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + final JList? res = _jniApi.getPlatformEncodedStringList( + _PigeonJniCodec.writeValue(key), + options.toJni(), + ); + final List? dartTypeRes = (_PigeonJniCodec.readValue(res) as List?) + ?.cast(); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + StringListResult? getStringList(String key, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + final jni_bridge.StringListResult? res = _jniApi.getStringList( + _PigeonJniCodec.writeValue(key), + options.toJni(), + ); + final StringListResult? dartTypeRes = StringListResult.fromJni(res); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + void clear(List? allowList, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + return _jniApi.clear( + _PigeonJniCodec.writeValue?>(allowList), + options.toJni(), + ); + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + Map getAll(List? allowList, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + final JMap res = _jniApi.getAll( + _PigeonJniCodec.writeValue?>(allowList), + options.toJni(), + ); + final Map dartTypeRes = + (_PigeonJniCodec.readValue(res)! as Map).cast(); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } + + List getKeys(List? allowList, SharedPreferencesPigeonOptions options) { + try { + if (_jniApi != null) { + final JList res = _jniApi.getKeys( + _PigeonJniCodec.writeValue?>(allowList), + options.toJni(), + ); + final List dartTypeRes = (_PigeonJniCodec.readValue(res)! as List) + .cast(); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } on JThrowable catch (e) { + throw _wrapJniException(e); + } + } +} + class SharedPreferencesAsyncApi { - /// Constructor for [SharedPreferencesAsyncApi]. The [binaryMessenger] named argument is - /// available for dependency injection. If it is left null, the default + /// Constructor for [SharedPreferencesAsyncApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - SharedPreferencesAsyncApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) - : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; - final BinaryMessenger? pigeonVar_binaryMessenger; + SharedPreferencesAsyncApi({ + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + SharedPreferencesAsyncApiForNativeInterop? nativeInteropApi, + }) : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty + ? '.$messageChannelSuffix' + : '', + _nativeInteropApi = nativeInteropApi; + + /// Creates an instance of [SharedPreferencesAsyncApi] that requests an instance of + /// [SharedPreferencesAsyncApiForNativeInterop] from the host platform with a matching instance name + /// to [messageChannelSuffix] or the default instance. + /// + /// Throws [ArgumentError] if no matching instance can be found. + factory SharedPreferencesAsyncApi.createWithNativeInteropApi({ + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + }) { + SharedPreferencesAsyncApiForNativeInterop? nativeInteropApi; + String nativeInteropApiInstanceName = ''; + if (Platform.isAndroid) { + if (messageChannelSuffix.isEmpty) { + nativeInteropApi = SharedPreferencesAsyncApiForNativeInterop.getInstance(); + } else { + nativeInteropApiInstanceName = messageChannelSuffix; + nativeInteropApi = SharedPreferencesAsyncApiForNativeInterop.getInstance( + channelName: messageChannelSuffix, + ); + } + } else { + throw UnsupportedError( + 'Native Interop is not supported on this platform. Use the default constructor of SharedPreferencesAsyncApi instead.', + ); + } + if (nativeInteropApi == null) { + throw ArgumentError( + 'No SharedPreferencesAsyncApi instance with ${nativeInteropApiInstanceName.isEmpty ? 'no ' : ''} instance name ${nativeInteropApiInstanceName.isNotEmpty ? '"$nativeInteropApiInstanceName" ' : ''}found.', + ); + } + return SharedPreferencesAsyncApi( + binaryMessenger: binaryMessenger, + messageChannelSuffix: messageChannelSuffix, + nativeInteropApi: nativeInteropApi, + ); + } + final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; + final SharedPreferencesAsyncApiForNativeInterop? _nativeInteropApi; + /// Adds property to shared preferences data set of type `bool`. Future setBool(String key, bool value, SharedPreferencesPigeonOptions options) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.setBool(key, value, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setBool$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -265,6 +820,9 @@ class SharedPreferencesAsyncApi { /// Adds property to shared preferences data set of type `String`. Future setString(String key, String value, SharedPreferencesPigeonOptions options) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.setString(key, value, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setString$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -284,6 +842,9 @@ class SharedPreferencesAsyncApi { /// Adds property to shared preferences data set of type `int`. Future setInt(String key, int value, SharedPreferencesPigeonOptions options) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.setInt(key, value, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setInt$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -303,6 +864,9 @@ class SharedPreferencesAsyncApi { /// Adds property to shared preferences data set of type `double`. Future setDouble(String key, double value, SharedPreferencesPigeonOptions options) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.setDouble(key, value, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setDouble$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -326,6 +890,9 @@ class SharedPreferencesAsyncApi { String value, SharedPreferencesPigeonOptions options, ) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.setEncodedStringList(key, value, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setEncodedStringList$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -351,6 +918,9 @@ class SharedPreferencesAsyncApi { List value, SharedPreferencesPigeonOptions options, ) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.setDeprecatedStringList(key, value, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.setDeprecatedStringList$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -370,6 +940,9 @@ class SharedPreferencesAsyncApi { /// Gets individual String value stored with [key], if any. Future getString(String key, SharedPreferencesPigeonOptions options) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.getString(key, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getString$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -390,6 +963,9 @@ class SharedPreferencesAsyncApi { /// Gets individual void value stored with [key], if any. Future getBool(String key, SharedPreferencesPigeonOptions options) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.getBool(key, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getBool$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -410,6 +986,9 @@ class SharedPreferencesAsyncApi { /// Gets individual double value stored with [key], if any. Future getDouble(String key, SharedPreferencesPigeonOptions options) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.getDouble(key, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getDouble$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -430,6 +1009,9 @@ class SharedPreferencesAsyncApi { /// Gets individual int value stored with [key], if any. Future getInt(String key, SharedPreferencesPigeonOptions options) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.getInt(key, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getInt$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -453,6 +1035,9 @@ class SharedPreferencesAsyncApi { String key, SharedPreferencesPigeonOptions options, ) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.getPlatformEncodedStringList(key, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getPlatformEncodedStringList$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -476,6 +1061,9 @@ class SharedPreferencesAsyncApi { String key, SharedPreferencesPigeonOptions options, ) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.getStringList(key, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getStringList$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -496,6 +1084,9 @@ class SharedPreferencesAsyncApi { /// Removes all properties from shared preferences data set with matching prefix. Future clear(List? allowList, SharedPreferencesPigeonOptions options) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.clear(allowList, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.clear$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -517,6 +1108,9 @@ class SharedPreferencesAsyncApi { List? allowList, SharedPreferencesPigeonOptions options, ) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.getAll(allowList, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getAll$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( @@ -543,6 +1137,9 @@ class SharedPreferencesAsyncApi { List? allowList, SharedPreferencesPigeonOptions options, ) async { + if (_nativeInteropApi != null) { + return _nativeInteropApi.getKeys(allowList, options); + } final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_android.SharedPreferencesAsyncApi.getKeys$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( diff --git a/packages/shared_preferences/shared_preferences_android/lib/src/messages_async.g.jni.dart b/packages/shared_preferences/shared_preferences_android/lib/src/messages_async.g.jni.dart new file mode 100644 index 000000000000..ea82aae31212 --- /dev/null +++ b/packages/shared_preferences/shared_preferences_android/lib/src/messages_async.g.jni.dart @@ -0,0 +1,3470 @@ +// AUTO GENERATED BY JNIGEN 0.17.0. DO NOT EDIT! + +// ignore_for_file: annotate_overrides +// ignore_for_file: argument_type_not_assignable +// ignore_for_file: camel_case_extensions +// ignore_for_file: camel_case_types +// ignore_for_file: constant_identifier_names +// ignore_for_file: comment_references +// ignore_for_file: doc_directive_unknown +// ignore_for_file: file_names +// ignore_for_file: inference_failure_on_untyped_parameter +// ignore_for_file: invalid_internal_annotation +// ignore_for_file: invalid_use_of_internal_member +// ignore_for_file: library_prefixes +// ignore_for_file: lines_longer_than_80_chars +// ignore_for_file: no_leading_underscores_for_library_prefixes +// ignore_for_file: no_leading_underscores_for_local_identifiers +// ignore_for_file: non_constant_identifier_names +// ignore_for_file: only_throw_errors +// ignore_for_file: overridden_fields +// ignore_for_file: prefer_double_quotes +// ignore_for_file: unintended_html_in_doc_comment +// ignore_for_file: unnecessary_cast +// ignore_for_file: unnecessary_non_null_assertion +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: unused_element +// ignore_for_file: unused_field +// ignore_for_file: unused_import +// ignore_for_file: unused_local_variable +// ignore_for_file: unused_shown_name +// ignore_for_file: use_super_parameters + +import 'dart:core' as core$_; +import 'dart:core' show Object, String; + +import 'package:jni/_internal.dart' as jni$_; +import 'package:jni/jni.dart' as jni$_; + +const _$jniVersionCheck = jni$_.JniVersionCheck(1, 0); + +/// from: `io.flutter.plugins.sharedpreferences.SharedPreferencesError` +extension type SharedPreferencesError._(jni$_.JObject _$this) implements RuntimeException { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/SharedPreferencesError', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = $SharedPreferencesError$Type$(); + static final _id_new$ = _class.constructorId( + r'(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V', + ); + + static final _new$ = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + (jni$_.Pointer, jni$_.Pointer, jni$_.Pointer) + >, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public void (java.lang.String string, java.lang.String string1, java.lang.Object object)` + /// The returned object must be released after use, by calling the [release] method. + factory SharedPreferencesError( + jni$_.JString string, + jni$_.JString? string1, + jni$_.JObject? object, + ) { + final _$$classRef = _class.reference; + final _$string = string.reference; + final _$string1 = string1?.reference ?? jni$_.jNullReference; + final _$object = object?.reference ?? jni$_.jNullReference; + return _new$( + _$$classRef.pointer, + _id_new$.pointer, + _$string.pointer, + _$string1.pointer, + _$object.pointer, + ).object(); + } + + static final _id_new$1 = _class.constructorId( + r'(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V', + ); + + static final _new$1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + ( + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Int32, + jni$_.Pointer, + ) + >, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + core$_.int, + jni$_.Pointer, + ) + >(); + + /// from: `synthetic public void (java.lang.String string, java.lang.String string1, java.lang.Object object, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker)` + /// The returned object must be released after use, by calling the [release] method. + factory SharedPreferencesError.new$1( + jni$_.JString? string, + jni$_.JString? string1, + jni$_.JObject? object, + core$_.int i, + DefaultConstructorMarker? defaultConstructorMarker, + ) { + final _$$classRef = _class.reference; + final _$string = string?.reference ?? jni$_.jNullReference; + final _$string1 = string1?.reference ?? jni$_.jNullReference; + final _$object = object?.reference ?? jni$_.jNullReference; + final _$defaultConstructorMarker = defaultConstructorMarker?.reference ?? jni$_.jNullReference; + return _new$1( + _$$classRef.pointer, + _id_new$1.pointer, + _$string.pointer, + _$string1.pointer, + _$object.pointer, + i, + _$defaultConstructorMarker.pointer, + ).object(); + } +} + +extension SharedPreferencesError$$Methods on SharedPreferencesError { + static final _id_get$code = SharedPreferencesError._class.instanceMethodId( + r'getCode', + r'()Ljava/lang/String;', + ); + + static final _get$code = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public final java.lang.String getCode()` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString get code { + final _$$selfRef = reference; + return _get$code(_$$selfRef.pointer, _id_get$code.pointer).object(); + } + + static final _id_get$message = SharedPreferencesError._class.instanceMethodId( + r'getMessage', + r'()Ljava/lang/String;', + ); + + static final _get$message = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public java.lang.String getMessage()` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString? get message { + final _$$selfRef = reference; + return _get$message(_$$selfRef.pointer, _id_get$message.pointer).object(); + } + + static final _id_get$details = SharedPreferencesError._class.instanceMethodId( + r'getDetails', + r'()Ljava/lang/Object;', + ); + + static final _get$details = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public final java.lang.Object getDetails()` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JObject? get details { + final _$$selfRef = reference; + return _get$details(_$$selfRef.pointer, _id_get$details.pointer).object(); + } +} + +final class $SharedPreferencesError$Type$ extends jni$_.JType { + @jni$_.internal + const $SharedPreferencesError$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lio/flutter/plugins/sharedpreferences/SharedPreferencesError;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.SharedPreferencesAsyncApi` +extension type SharedPreferencesAsyncApi._(jni$_.JObject _$this) implements jni$_.JObject { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/SharedPreferencesAsyncApi', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = $SharedPreferencesAsyncApi$Type$(); + + /// Maps a specific port to the implemented interface. + static final core$_.Map _$impls = {}; + static jni$_.JObjectPtr _$invoke( + core$_.int port, + jni$_.JObjectPtr descriptor, + jni$_.JObjectPtr args, + ) { + return _$invokeMethod( + port, + jni$_.MethodInvocation.fromAddresses(0, descriptor.address, args.address), + ); + } + + static final jni$_.Pointer< + jni$_.NativeFunction + > + _$invokePointer = jni$_.Pointer.fromFunction(_$invoke); + + static jni$_.Pointer _$invokeMethod(core$_.int $p, jni$_.MethodInvocation $i) { + try { + final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); + final $a = $i.args; + if ($d == + r'setBool(Ljava/lang/String;ZLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V') { + _$impls[$p]!.setBool( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JBoolean).toDartBool(releaseOriginal: true), + ($a![2] as SharedPreferencesPigeonOptions), + ); + return jni$_.nullptr; + } + if ($d == + r'setString(Ljava/lang/String;Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V') { + _$impls[$p]!.setString( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JString), + ($a![2] as SharedPreferencesPigeonOptions), + ); + return jni$_.nullptr; + } + if ($d == + r'setInt(Ljava/lang/String;JLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V') { + _$impls[$p]!.setInt( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JLong).toDartInt(releaseOriginal: true), + ($a![2] as SharedPreferencesPigeonOptions), + ); + return jni$_.nullptr; + } + if ($d == + r'setDouble(Ljava/lang/String;DLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V') { + _$impls[$p]!.setDouble( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JDouble).toDartDouble(releaseOriginal: true), + ($a![2] as SharedPreferencesPigeonOptions), + ); + return jni$_.nullptr; + } + if ($d == + r'setEncodedStringList(Ljava/lang/String;Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V') { + _$impls[$p]!.setEncodedStringList( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JString), + ($a![2] as SharedPreferencesPigeonOptions), + ); + return jni$_.nullptr; + } + if ($d == + r'setDeprecatedStringList(Ljava/lang/String;Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V') { + _$impls[$p]!.setDeprecatedStringList( + ($a![0] as jni$_.JString), + ($a![1] as jni$_.JList), + ($a![2] as SharedPreferencesPigeonOptions), + ); + return jni$_.nullptr; + } + if ($d == + r'getString(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/String;') { + final $r = _$impls[$p]!.getString( + ($a![0] as jni$_.JString), + ($a![1] as SharedPreferencesPigeonOptions), + ); + return ($r as jni$_.JObject?)?.as(const jni$_.$JObject$Type$()).reference.toPointer() ?? + jni$_.nullptr; + } + if ($d == + r'getBool(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/Boolean;') { + final $r = _$impls[$p]!.getBool( + ($a![0] as jni$_.JString), + ($a![1] as SharedPreferencesPigeonOptions), + ); + return ($r as jni$_.JObject?)?.as(const jni$_.$JObject$Type$()).reference.toPointer() ?? + jni$_.nullptr; + } + if ($d == + r'getDouble(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/Double;') { + final $r = _$impls[$p]!.getDouble( + ($a![0] as jni$_.JString), + ($a![1] as SharedPreferencesPigeonOptions), + ); + return ($r as jni$_.JObject?)?.as(const jni$_.$JObject$Type$()).reference.toPointer() ?? + jni$_.nullptr; + } + if ($d == + r'getInt(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/Long;') { + final $r = _$impls[$p]!.getInt( + ($a![0] as jni$_.JString), + ($a![1] as SharedPreferencesPigeonOptions), + ); + return ($r as jni$_.JObject?)?.as(const jni$_.$JObject$Type$()).reference.toPointer() ?? + jni$_.nullptr; + } + if ($d == + r'getPlatformEncodedStringList(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/util/List;') { + final $r = _$impls[$p]!.getPlatformEncodedStringList( + ($a![0] as jni$_.JString), + ($a![1] as SharedPreferencesPigeonOptions), + ); + return ($r as jni$_.JObject?)?.as(const jni$_.$JObject$Type$()).reference.toPointer() ?? + jni$_.nullptr; + } + if ($d == + r'getStringList(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Lio/flutter/plugins/sharedpreferences/StringListResult;') { + final $r = _$impls[$p]!.getStringList( + ($a![0] as jni$_.JString), + ($a![1] as SharedPreferencesPigeonOptions), + ); + return ($r as jni$_.JObject?)?.as(const jni$_.$JObject$Type$()).reference.toPointer() ?? + jni$_.nullptr; + } + if ($d == + r'clear(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V') { + _$impls[$p]!.clear( + ($a![0] as jni$_.JList?), + ($a![1] as SharedPreferencesPigeonOptions), + ); + return jni$_.nullptr; + } + if ($d == + r'getAll(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/util/Map;') { + final $r = _$impls[$p]!.getAll( + ($a![0] as jni$_.JList?), + ($a![1] as SharedPreferencesPigeonOptions), + ); + return ($r as jni$_.JObject?)?.as(const jni$_.$JObject$Type$()).reference.toPointer() ?? + jni$_.nullptr; + } + if ($d == + r'getKeys(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/util/List;') { + final $r = _$impls[$p]!.getKeys( + ($a![0] as jni$_.JList?), + ($a![1] as SharedPreferencesPigeonOptions), + ); + return ($r as jni$_.JObject?)?.as(const jni$_.$JObject$Type$()).reference.toPointer() ?? + jni$_.nullptr; + } + } catch (e) { + return jni$_.ProtectedJniExtensions.newDartException(e); + } + return jni$_.nullptr; + } + + static void implementIn(jni$_.JImplementer implementer, $SharedPreferencesAsyncApi $impl) { + late final jni$_.RawReceivePort $p; + $p = jni$_.RawReceivePort(($m) { + if ($m == null) { + _$impls.remove($p.sendPort.nativePort); + $p.close(); + return; + } + final $i = jni$_.MethodInvocation.fromMessage($m); + final $r = _$invokeMethod($p.sendPort.nativePort, $i); + $i.args?.release(); + jni$_.ProtectedJniExtensions.returnResult($i.result, $r); + }); + implementer.add(r'io.flutter.plugins.sharedpreferences.SharedPreferencesAsyncApi', $p, _$invokePointer, [ + if ($impl.setBool$async) + r'setBool(Ljava/lang/String;ZLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + if ($impl.setString$async) + r'setString(Ljava/lang/String;Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + if ($impl.setInt$async) + r'setInt(Ljava/lang/String;JLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + if ($impl.setDouble$async) + r'setDouble(Ljava/lang/String;DLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + if ($impl.setEncodedStringList$async) + r'setEncodedStringList(Ljava/lang/String;Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + if ($impl.setDeprecatedStringList$async) + r'setDeprecatedStringList(Ljava/lang/String;Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + if ($impl.clear$async) + r'clear(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ]); + final $a = $p.sendPort.nativePort; + _$impls[$a] = $impl; + } + + factory SharedPreferencesAsyncApi.implement($SharedPreferencesAsyncApi $impl) { + final $i = jni$_.JImplementer(); + implementIn($i, $impl); + return $i.implement(); + } +} + +extension SharedPreferencesAsyncApi$$Methods on SharedPreferencesAsyncApi { + static final _id_setBool = SharedPreferencesAsyncApi._class.instanceMethodId( + r'setBool', + r'(Ljava/lang/String;ZLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setBool = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int32, jni$_.Pointer)>, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setBool(key: kotlin.String, value: kotlin.Boolean, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setBool( + jni$_.JString string, + core$_.bool z, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setBool( + _$$selfRef.pointer, + _id_setBool.pointer, + _$string.pointer, + z ? 1 : 0, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setString = SharedPreferencesAsyncApi._class.instanceMethodId( + r'setString', + r'(Ljava/lang/String;Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setString = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + (jni$_.Pointer, jni$_.Pointer, jni$_.Pointer) + >, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setString(key: kotlin.String, value: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setString( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$string1 = string1.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setString( + _$$selfRef.pointer, + _id_setString.pointer, + _$string.pointer, + _$string1.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setInt = SharedPreferencesAsyncApi._class.instanceMethodId( + r'setInt', + r'(Ljava/lang/String;JLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setInt = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int64, jni$_.Pointer)>, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setInt(key: kotlin.String, value: kotlin.Long, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setInt( + jni$_.JString string, + core$_.int j, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setInt( + _$$selfRef.pointer, + _id_setInt.pointer, + _$string.pointer, + j, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setDouble = SharedPreferencesAsyncApi._class.instanceMethodId( + r'setDouble', + r'(Ljava/lang/String;DLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setDouble = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Double, jni$_.Pointer)>, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.double, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setDouble(key: kotlin.String, value: kotlin.Double, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setDouble( + jni$_.JString string, + core$_.double d, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setDouble( + _$$selfRef.pointer, + _id_setDouble.pointer, + _$string.pointer, + d, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setEncodedStringList = SharedPreferencesAsyncApi._class.instanceMethodId( + r'setEncodedStringList', + r'(Ljava/lang/String;Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setEncodedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + (jni$_.Pointer, jni$_.Pointer, jni$_.Pointer) + >, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setEncodedStringList(key: kotlin.String, value: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setEncodedStringList( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$string1 = string1.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setEncodedStringList( + _$$selfRef.pointer, + _id_setEncodedStringList.pointer, + _$string.pointer, + _$string1.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setDeprecatedStringList = SharedPreferencesAsyncApi._class.instanceMethodId( + r'setDeprecatedStringList', + r'(Ljava/lang/String;Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setDeprecatedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + (jni$_.Pointer, jni$_.Pointer, jni$_.Pointer) + >, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setDeprecatedStringList(key: kotlin.String, value: kotlin.collections.List, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setDeprecatedStringList( + jni$_.JString string, + jni$_.JList list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$list = list.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setDeprecatedStringList( + _$$selfRef.pointer, + _id_setDeprecatedStringList.pointer, + _$string.pointer, + _$list.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_getString = SharedPreferencesAsyncApi._class.instanceMethodId( + r'getString', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/String;', + ); + + static final _getString = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getString(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.String?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString? getString( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getString( + _$$selfRef.pointer, + _id_getString.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_getBool = SharedPreferencesAsyncApi._class.instanceMethodId( + r'getBool', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/Boolean;', + ); + + static final _getBool = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getBool(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Boolean?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JBoolean? getBool( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getBool( + _$$selfRef.pointer, + _id_getBool.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_getDouble = SharedPreferencesAsyncApi._class.instanceMethodId( + r'getDouble', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/Double;', + ); + + static final _getDouble = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getDouble(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Double?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JDouble? getDouble( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getDouble( + _$$selfRef.pointer, + _id_getDouble.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_getInt = SharedPreferencesAsyncApi._class.instanceMethodId( + r'getInt', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/Long;', + ); + + static final _getInt = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getInt(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Long?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JLong? getInt( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getInt( + _$$selfRef.pointer, + _id_getInt.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_getPlatformEncodedStringList = SharedPreferencesAsyncApi._class.instanceMethodId( + r'getPlatformEncodedStringList', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/util/List;', + ); + + static final _getPlatformEncodedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getPlatformEncodedStringList(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.collections.List?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JList? getPlatformEncodedStringList( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getPlatformEncodedStringList( + _$$selfRef.pointer, + _id_getPlatformEncodedStringList.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object?>(); + } + + static final _id_getStringList = SharedPreferencesAsyncApi._class.instanceMethodId( + r'getStringList', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Lio/flutter/plugins/sharedpreferences/StringListResult;', + ); + + static final _getStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getStringList(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): io.flutter.plugins.sharedpreferences.StringListResult?` + /// The returned object must be released after use, by calling the [release] method. + StringListResult? getStringList( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getStringList( + _$$selfRef.pointer, + _id_getStringList.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_clear = SharedPreferencesAsyncApi._class.instanceMethodId( + r'clear', + r'(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _clear = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun clear(allowList: kotlin.collections.List?, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void clear( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$list = list?.reference ?? jni$_.jNullReference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _clear( + _$$selfRef.pointer, + _id_clear.pointer, + _$list.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_getAll = SharedPreferencesAsyncApi._class.instanceMethodId( + r'getAll', + r'(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/util/Map;', + ); + + static final _getAll = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getAll(allowList: kotlin.collections.List?, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.collections.Map` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JMap getAll( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$list = list?.reference ?? jni$_.jNullReference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getAll( + _$$selfRef.pointer, + _id_getAll.pointer, + _$list.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object>(); + } + + static final _id_getKeys = SharedPreferencesAsyncApi._class.instanceMethodId( + r'getKeys', + r'(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/util/List;', + ); + + static final _getKeys = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getKeys(allowList: kotlin.collections.List?, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.collections.List` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JList getKeys( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$list = list?.reference ?? jni$_.jNullReference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getKeys( + _$$selfRef.pointer, + _id_getKeys.pointer, + _$list.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object>(); + } +} + +abstract base mixin class $SharedPreferencesAsyncApi { + factory $SharedPreferencesAsyncApi({ + required void Function( + jni$_.JString string, + core$_.bool z, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setBool, + core$_.bool setBool$async, + required void Function( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setString, + core$_.bool setString$async, + required void Function( + jni$_.JString string, + core$_.int j, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setInt, + core$_.bool setInt$async, + required void Function( + jni$_.JString string, + core$_.double d, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setDouble, + core$_.bool setDouble$async, + required void Function( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setEncodedStringList, + core$_.bool setEncodedStringList$async, + required void Function( + jni$_.JString string, + jni$_.JList list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setDeprecatedStringList, + core$_.bool setDeprecatedStringList$async, + required jni$_.JString? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getString, + required jni$_.JBoolean? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getBool, + required jni$_.JDouble? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getDouble, + required jni$_.JLong? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getInt, + required jni$_.JList? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getPlatformEncodedStringList, + required StringListResult? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getStringList, + required void Function( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + clear, + core$_.bool clear$async, + required jni$_.JMap Function( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getAll, + required jni$_.JList Function( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getKeys, + }) = _$SharedPreferencesAsyncApi; + + void setBool( + jni$_.JString string, + core$_.bool z, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + core$_.bool get setBool$async => false; + void setString( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + core$_.bool get setString$async => false; + void setInt( + jni$_.JString string, + core$_.int j, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + core$_.bool get setInt$async => false; + void setDouble( + jni$_.JString string, + core$_.double d, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + core$_.bool get setDouble$async => false; + void setEncodedStringList( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + core$_.bool get setEncodedStringList$async => false; + void setDeprecatedStringList( + jni$_.JString string, + jni$_.JList list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + core$_.bool get setDeprecatedStringList$async => false; + jni$_.JString? getString( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + jni$_.JBoolean? getBool( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + jni$_.JDouble? getDouble( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + jni$_.JLong? getInt( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + jni$_.JList? getPlatformEncodedStringList( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + StringListResult? getStringList( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + void clear( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + core$_.bool get clear$async => false; + jni$_.JMap getAll( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); + jni$_.JList getKeys( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ); +} + +final class _$SharedPreferencesAsyncApi with $SharedPreferencesAsyncApi { + _$SharedPreferencesAsyncApi({ + required void Function( + jni$_.JString string, + core$_.bool z, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setBool, + this.setBool$async = false, + required void Function( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setString, + this.setString$async = false, + required void Function( + jni$_.JString string, + core$_.int j, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setInt, + this.setInt$async = false, + required void Function( + jni$_.JString string, + core$_.double d, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setDouble, + this.setDouble$async = false, + required void Function( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setEncodedStringList, + this.setEncodedStringList$async = false, + required void Function( + jni$_.JString string, + jni$_.JList list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + setDeprecatedStringList, + this.setDeprecatedStringList$async = false, + required jni$_.JString? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getString, + required jni$_.JBoolean? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getBool, + required jni$_.JDouble? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getDouble, + required jni$_.JLong? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getInt, + required jni$_.JList? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getPlatformEncodedStringList, + required StringListResult? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getStringList, + required void Function( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + clear, + this.clear$async = false, + required jni$_.JMap Function( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getAll, + required jni$_.JList Function( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + getKeys, + }) : _setBool = setBool, + _setString = setString, + _setInt = setInt, + _setDouble = setDouble, + _setEncodedStringList = setEncodedStringList, + _setDeprecatedStringList = setDeprecatedStringList, + _getString = getString, + _getBool = getBool, + _getDouble = getDouble, + _getInt = getInt, + _getPlatformEncodedStringList = getPlatformEncodedStringList, + _getStringList = getStringList, + _clear = clear, + _getAll = getAll, + _getKeys = getKeys; + + final void Function( + jni$_.JString string, + core$_.bool z, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _setBool; + final core$_.bool setBool$async; + final void Function( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _setString; + final core$_.bool setString$async; + final void Function( + jni$_.JString string, + core$_.int j, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _setInt; + final core$_.bool setInt$async; + final void Function( + jni$_.JString string, + core$_.double d, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _setDouble; + final core$_.bool setDouble$async; + final void Function( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _setEncodedStringList; + final core$_.bool setEncodedStringList$async; + final void Function( + jni$_.JString string, + jni$_.JList list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _setDeprecatedStringList; + final core$_.bool setDeprecatedStringList$async; + final jni$_.JString? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _getString; + final jni$_.JBoolean? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _getBool; + final jni$_.JDouble? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _getDouble; + final jni$_.JLong? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _getInt; + final jni$_.JList? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _getPlatformEncodedStringList; + final StringListResult? Function( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _getStringList; + final void Function( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _clear; + final core$_.bool clear$async; + final jni$_.JMap Function( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _getAll; + final jni$_.JList Function( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) + _getKeys; + + void setBool( + jni$_.JString string, + core$_.bool z, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _setBool(string, z, sharedPreferencesPigeonOptions); + } + + void setString( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _setString(string, string1, sharedPreferencesPigeonOptions); + } + + void setInt( + jni$_.JString string, + core$_.int j, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _setInt(string, j, sharedPreferencesPigeonOptions); + } + + void setDouble( + jni$_.JString string, + core$_.double d, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _setDouble(string, d, sharedPreferencesPigeonOptions); + } + + void setEncodedStringList( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _setEncodedStringList(string, string1, sharedPreferencesPigeonOptions); + } + + void setDeprecatedStringList( + jni$_.JString string, + jni$_.JList list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _setDeprecatedStringList(string, list, sharedPreferencesPigeonOptions); + } + + jni$_.JString? getString( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _getString(string, sharedPreferencesPigeonOptions); + } + + jni$_.JBoolean? getBool( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _getBool(string, sharedPreferencesPigeonOptions); + } + + jni$_.JDouble? getDouble( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _getDouble(string, sharedPreferencesPigeonOptions); + } + + jni$_.JLong? getInt( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _getInt(string, sharedPreferencesPigeonOptions); + } + + jni$_.JList? getPlatformEncodedStringList( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _getPlatformEncodedStringList(string, sharedPreferencesPigeonOptions); + } + + StringListResult? getStringList( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _getStringList(string, sharedPreferencesPigeonOptions); + } + + void clear( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _clear(list, sharedPreferencesPigeonOptions); + } + + jni$_.JMap getAll( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _getAll(list, sharedPreferencesPigeonOptions); + } + + jni$_.JList getKeys( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + return _getKeys(list, sharedPreferencesPigeonOptions); + } +} + +final class $SharedPreferencesAsyncApi$Type$ extends jni$_.JType { + @jni$_.internal + const $SharedPreferencesAsyncApi$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lio/flutter/plugins/sharedpreferences/SharedPreferencesAsyncApi;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.SharedPreferencesAsyncApiRegistrar` +extension type SharedPreferencesAsyncApiRegistrar._(jni$_.JObject _$this) + implements jni$_.JObject, SharedPreferencesAsyncApi { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/SharedPreferencesAsyncApiRegistrar', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = + $SharedPreferencesAsyncApiRegistrar$Type$(); + static final _id_new$ = _class.constructorId(r'()V'); + + static final _new$ = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_NewObject') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public void ()` + /// The returned object must be released after use, by calling the [release] method. + factory SharedPreferencesAsyncApiRegistrar() { + final _$$classRef = _class.reference; + return _new$( + _$$classRef.pointer, + _id_new$.pointer, + ).object(); + } +} + +extension SharedPreferencesAsyncApiRegistrar$$Methods on SharedPreferencesAsyncApiRegistrar { + static final _id_register = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'register', + r'(Lio/flutter/plugins/sharedpreferences/SharedPreferencesAsyncApi;Ljava/lang/String;)Lio/flutter/plugins/sharedpreferences/SharedPreferencesAsyncApiRegistrar;', + ); + + static final _register = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun register(api: io.flutter.plugins.sharedpreferences.SharedPreferencesAsyncApi?, name: kotlin.String): io.flutter.plugins.sharedpreferences.SharedPreferencesAsyncApiRegistrar` + /// The returned object must be released after use, by calling the [release] method. + SharedPreferencesAsyncApiRegistrar register( + SharedPreferencesAsyncApi? sharedPreferencesAsyncApi, + jni$_.JString string, + ) { + final _$$selfRef = reference; + final _$sharedPreferencesAsyncApi = + sharedPreferencesAsyncApi?.reference ?? jni$_.jNullReference; + final _$string = string.reference; + return _register( + _$$selfRef.pointer, + _id_register.pointer, + _$sharedPreferencesAsyncApi.pointer, + _$string.pointer, + ).object(); + } + + static final _id_getInstance = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'getInstance', + r'(Ljava/lang/String;)Lio/flutter/plugins/sharedpreferences/SharedPreferencesAsyncApiRegistrar;', + ); + + static final _getInstance = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getInstance(name: kotlin.String): io.flutter.plugins.sharedpreferences.SharedPreferencesAsyncApiRegistrar?` + /// The returned object must be released after use, by calling the [release] method. + SharedPreferencesAsyncApiRegistrar? getInstance(jni$_.JString string) { + final _$$selfRef = reference; + final _$string = string.reference; + return _getInstance( + _$$selfRef.pointer, + _id_getInstance.pointer, + _$string.pointer, + ).object(); + } + + static final _id_setBool = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'setBool', + r'(Ljava/lang/String;ZLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setBool = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int32, jni$_.Pointer)>, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setBool(key: kotlin.String, value: kotlin.Boolean, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setBool( + jni$_.JString string, + core$_.bool z, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setBool( + _$$selfRef.pointer, + _id_setBool.pointer, + _$string.pointer, + z ? 1 : 0, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setString = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'setString', + r'(Ljava/lang/String;Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setString = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + (jni$_.Pointer, jni$_.Pointer, jni$_.Pointer) + >, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setString(key: kotlin.String, value: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setString( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$string1 = string1.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setString( + _$$selfRef.pointer, + _id_setString.pointer, + _$string.pointer, + _$string1.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setInt = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'setInt', + r'(Ljava/lang/String;JLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setInt = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int64, jni$_.Pointer)>, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setInt(key: kotlin.String, value: kotlin.Long, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setInt( + jni$_.JString string, + core$_.int j, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setInt( + _$$selfRef.pointer, + _id_setInt.pointer, + _$string.pointer, + j, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setDouble = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'setDouble', + r'(Ljava/lang/String;DLio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setDouble = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Double, jni$_.Pointer)>, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.double, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setDouble(key: kotlin.String, value: kotlin.Double, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setDouble( + jni$_.JString string, + core$_.double d, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setDouble( + _$$selfRef.pointer, + _id_setDouble.pointer, + _$string.pointer, + d, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setEncodedStringList = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'setEncodedStringList', + r'(Ljava/lang/String;Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setEncodedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + (jni$_.Pointer, jni$_.Pointer, jni$_.Pointer) + >, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setEncodedStringList(key: kotlin.String, value: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setEncodedStringList( + jni$_.JString string, + jni$_.JString string1, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$string1 = string1.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setEncodedStringList( + _$$selfRef.pointer, + _id_setEncodedStringList.pointer, + _$string.pointer, + _$string1.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_setDeprecatedStringList = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'setDeprecatedStringList', + r'(Ljava/lang/String;Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _setDeprecatedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + (jni$_.Pointer, jni$_.Pointer, jni$_.Pointer) + >, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun setDeprecatedStringList(key: kotlin.String, value: kotlin.collections.List, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void setDeprecatedStringList( + jni$_.JString string, + jni$_.JList list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$list = list.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _setDeprecatedStringList( + _$$selfRef.pointer, + _id_setDeprecatedStringList.pointer, + _$string.pointer, + _$list.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_getString = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'getString', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/String;', + ); + + static final _getString = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getString(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.String?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString? getString( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getString( + _$$selfRef.pointer, + _id_getString.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_getBool = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'getBool', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/Boolean;', + ); + + static final _getBool = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getBool(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Boolean?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JBoolean? getBool( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getBool( + _$$selfRef.pointer, + _id_getBool.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_getDouble = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'getDouble', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/Double;', + ); + + static final _getDouble = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getDouble(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Double?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JDouble? getDouble( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getDouble( + _$$selfRef.pointer, + _id_getDouble.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_getInt = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'getInt', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/lang/Long;', + ); + + static final _getInt = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getInt(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Long?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JLong? getInt( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getInt( + _$$selfRef.pointer, + _id_getInt.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_getPlatformEncodedStringList = SharedPreferencesAsyncApiRegistrar._class + .instanceMethodId( + r'getPlatformEncodedStringList', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/util/List;', + ); + + static final _getPlatformEncodedStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getPlatformEncodedStringList(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.collections.List?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JList? getPlatformEncodedStringList( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getPlatformEncodedStringList( + _$$selfRef.pointer, + _id_getPlatformEncodedStringList.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object?>(); + } + + static final _id_getStringList = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'getStringList', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Lio/flutter/plugins/sharedpreferences/StringListResult;', + ); + + static final _getStringList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getStringList(key: kotlin.String, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): io.flutter.plugins.sharedpreferences.StringListResult?` + /// The returned object must be released after use, by calling the [release] method. + StringListResult? getStringList( + jni$_.JString string, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$string = string.reference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getStringList( + _$$selfRef.pointer, + _id_getStringList.pointer, + _$string.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object(); + } + + static final _id_clear = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'clear', + r'(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)V', + ); + + static final _clear = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallVoidMethod') + .asFunction< + jni$_.JThrowablePtr Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun clear(allowList: kotlin.collections.List?, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.Unit` + void clear( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$list = list?.reference ?? jni$_.jNullReference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + _clear( + _$$selfRef.pointer, + _id_clear.pointer, + _$list.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).check(); + } + + static final _id_getAll = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'getAll', + r'(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/util/Map;', + ); + + static final _getAll = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getAll(allowList: kotlin.collections.List?, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.collections.Map` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JMap getAll( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$list = list?.reference ?? jni$_.jNullReference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getAll( + _$$selfRef.pointer, + _id_getAll.pointer, + _$list.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object>(); + } + + static final _id_getKeys = SharedPreferencesAsyncApiRegistrar._class.instanceMethodId( + r'getKeys', + r'(Ljava/util/List;Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;)Ljava/util/List;', + ); + + static final _getKeys = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun getKeys(allowList: kotlin.collections.List?, options: io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions): kotlin.collections.List` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JList getKeys( + jni$_.JList? list, + SharedPreferencesPigeonOptions sharedPreferencesPigeonOptions, + ) { + final _$$selfRef = reference; + final _$list = list?.reference ?? jni$_.jNullReference; + final _$sharedPreferencesPigeonOptions = sharedPreferencesPigeonOptions.reference; + return _getKeys( + _$$selfRef.pointer, + _id_getKeys.pointer, + _$list.pointer, + _$sharedPreferencesPigeonOptions.pointer, + ).object>(); + } +} + +final class $SharedPreferencesAsyncApiRegistrar$Type$ + extends jni$_.JType { + @jni$_.internal + const $SharedPreferencesAsyncApiRegistrar$Type$(); + + @jni$_.internal + @core$_.override + String get signature => + r'Lio/flutter/plugins/sharedpreferences/SharedPreferencesAsyncApiRegistrar;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions$Companion` +extension type SharedPreferencesPigeonOptions$Companion._(jni$_.JObject _$this) + implements jni$_.JObject { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions$Companion', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = + $SharedPreferencesPigeonOptions$Companion$Type$(); + static final _id_new$ = _class.constructorId( + r'(Lkotlin/jvm/internal/DefaultConstructorMarker;)V', + ); + + static final _new$ = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `synthetic public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker)` + /// The returned object must be released after use, by calling the [release] method. + factory SharedPreferencesPigeonOptions$Companion( + DefaultConstructorMarker? defaultConstructorMarker, + ) { + final _$$classRef = _class.reference; + final _$defaultConstructorMarker = defaultConstructorMarker?.reference ?? jni$_.jNullReference; + return _new$( + _$$classRef.pointer, + _id_new$.pointer, + _$defaultConstructorMarker.pointer, + ).object(); + } +} + +extension SharedPreferencesPigeonOptions$Companion$$Methods + on SharedPreferencesPigeonOptions$Companion { + static final _id_fromList = SharedPreferencesPigeonOptions$Companion._class.instanceMethodId( + r'fromList', + r'(Ljava/util/List;)Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;', + ); + + static final _fromList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `public fun fromList(pigeonVar_list: kotlin.collections.List): io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions` + /// The returned object must be released after use, by calling the [release] method. + SharedPreferencesPigeonOptions fromList(jni$_.JList list) { + final _$$selfRef = reference; + final _$list = list.reference; + return _fromList( + _$$selfRef.pointer, + _id_fromList.pointer, + _$list.pointer, + ).object(); + } +} + +final class $SharedPreferencesPigeonOptions$Companion$Type$ + extends jni$_.JType { + @jni$_.internal + const $SharedPreferencesPigeonOptions$Companion$Type$(); + + @jni$_.internal + @core$_.override + String get signature => + r'Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions$Companion;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions` +extension type SharedPreferencesPigeonOptions._(jni$_.JObject _$this) implements jni$_.JObject { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = + $SharedPreferencesPigeonOptions$Type$(); + static final _id_Companion = _class.staticFieldId( + r'Companion', + r'Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions$Companion;', + ); + + /// from: `static public final io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions$Companion Companion` + /// The returned object must be released after use, by calling the [release] method. + static SharedPreferencesPigeonOptions$Companion get Companion => + _id_Companion.get(_class, SharedPreferencesPigeonOptions$Companion.type) + as SharedPreferencesPigeonOptions$Companion; + + static final _id_new$ = _class.constructorId(r'(Ljava/lang/String;Z)V'); + + static final _new$ = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int32)>, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + ) + >(); + + /// from: `public void (java.lang.String string, boolean z)` + /// The returned object must be released after use, by calling the [release] method. + factory SharedPreferencesPigeonOptions(jni$_.JString? string, core$_.bool z) { + final _$$classRef = _class.reference; + final _$string = string?.reference ?? jni$_.jNullReference; + return _new$( + _$$classRef.pointer, + _id_new$.pointer, + _$string.pointer, + z ? 1 : 0, + ).object(); + } + + static final _id_new$1 = _class.constructorId( + r'(Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V', + ); + + static final _new$1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + (jni$_.Pointer, jni$_.Int32, jni$_.Int32, jni$_.Pointer) + >, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + core$_.int, + jni$_.Pointer, + ) + >(); + + /// from: `synthetic public void (java.lang.String string, boolean z, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker)` + /// The returned object must be released after use, by calling the [release] method. + factory SharedPreferencesPigeonOptions.new$1( + jni$_.JString? string, + core$_.bool z, + core$_.int i, + DefaultConstructorMarker? defaultConstructorMarker, + ) { + final _$$classRef = _class.reference; + final _$string = string?.reference ?? jni$_.jNullReference; + final _$defaultConstructorMarker = defaultConstructorMarker?.reference ?? jni$_.jNullReference; + return _new$1( + _$$classRef.pointer, + _id_new$1.pointer, + _$string.pointer, + z ? 1 : 0, + i, + _$defaultConstructorMarker.pointer, + ).object(); + } +} + +extension SharedPreferencesPigeonOptions$$Methods on SharedPreferencesPigeonOptions { + static final _id_get$fileName = SharedPreferencesPigeonOptions._class.instanceMethodId( + r'getFileName', + r'()Ljava/lang/String;', + ); + + static final _get$fileName = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public final java.lang.String getFileName()` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString? get fileName { + final _$$selfRef = reference; + return _get$fileName(_$$selfRef.pointer, _id_get$fileName.pointer).object(); + } + + static final _id_get$useDataStore = SharedPreferencesPigeonOptions._class.instanceMethodId( + r'getUseDataStore', + r'()Z', + ); + + static final _get$useDataStore = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallBooleanMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public final boolean getUseDataStore()` + core$_.bool get useDataStore { + final _$$selfRef = reference; + return _get$useDataStore(_$$selfRef.pointer, _id_get$useDataStore.pointer).boolean; + } + + static final _id_toList = SharedPreferencesPigeonOptions._class.instanceMethodId( + r'toList', + r'()Ljava/util/List;', + ); + + static final _toList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public fun toList(): kotlin.collections.List` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JList toList() { + final _$$selfRef = reference; + return _toList(_$$selfRef.pointer, _id_toList.pointer).object>(); + } + + static final _id_equals = SharedPreferencesPigeonOptions._class.instanceMethodId( + r'equals', + r'(Ljava/lang/Object;)Z', + ); + + static final _equals = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `public operator fun equals(other: kotlin.Any?): kotlin.Boolean` + core$_.bool equals(jni$_.JObject? object) { + final _$$selfRef = reference; + final _$object = object?.reference ?? jni$_.jNullReference; + return _equals(_$$selfRef.pointer, _id_equals.pointer, _$object.pointer).boolean; + } + + static final _id_hashCode$1 = SharedPreferencesPigeonOptions._class.instanceMethodId( + r'hashCode', + r'()I', + ); + + static final _hashCode$1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallIntMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public fun hashCode(): kotlin.Int` + core$_.int hashCode$1() { + final _$$selfRef = reference; + return _hashCode$1(_$$selfRef.pointer, _id_hashCode$1.pointer).integer; + } + + static final _id_toString$1 = SharedPreferencesPigeonOptions._class.instanceMethodId( + r'toString', + r'()Ljava/lang/String;', + ); + + static final _toString$1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public fun toString(): kotlin.String` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString toString$1() { + final _$$selfRef = reference; + return _toString$1(_$$selfRef.pointer, _id_toString$1.pointer).object(); + } + + static final _id_component1 = SharedPreferencesPigeonOptions._class.instanceMethodId( + r'component1', + r'()Ljava/lang/String;', + ); + + static final _component1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public operator fun component1(): kotlin.String?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString? component1() { + final _$$selfRef = reference; + return _component1(_$$selfRef.pointer, _id_component1.pointer).object(); + } + + static final _id_component2 = SharedPreferencesPigeonOptions._class.instanceMethodId( + r'component2', + r'()Z', + ); + + static final _component2 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallBooleanMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public operator fun component2(): kotlin.Boolean` + core$_.bool component2() { + final _$$selfRef = reference; + return _component2(_$$selfRef.pointer, _id_component2.pointer).boolean; + } + + static final _id_copy = SharedPreferencesPigeonOptions._class.instanceMethodId( + r'copy', + r'(Ljava/lang/String;Z)Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;', + ); + + static final _copy = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Int32)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + core$_.int, + ) + >(); + + /// from: `public fun copy(fileName: kotlin.String?, useDataStore: kotlin.Boolean): io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions` + /// The returned object must be released after use, by calling the [release] method. + SharedPreferencesPigeonOptions copy(jni$_.JString? string, core$_.bool z) { + final _$$selfRef = reference; + final _$string = string?.reference ?? jni$_.jNullReference; + return _copy( + _$$selfRef.pointer, + _id_copy.pointer, + _$string.pointer, + z ? 1 : 0, + ).object(); + } +} + +final class $SharedPreferencesPigeonOptions$Type$ + extends jni$_.JType { + @jni$_.internal + const $SharedPreferencesPigeonOptions$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lio/flutter/plugins/sharedpreferences/SharedPreferencesPigeonOptions;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.StringListResult$Companion` +extension type StringListResult$Companion._(jni$_.JObject _$this) implements jni$_.JObject { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/StringListResult$Companion', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = $StringListResult$Companion$Type$(); + static final _id_new$ = _class.constructorId( + r'(Lkotlin/jvm/internal/DefaultConstructorMarker;)V', + ); + + static final _new$ = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `synthetic public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker)` + /// The returned object must be released after use, by calling the [release] method. + factory StringListResult$Companion(DefaultConstructorMarker? defaultConstructorMarker) { + final _$$classRef = _class.reference; + final _$defaultConstructorMarker = defaultConstructorMarker?.reference ?? jni$_.jNullReference; + return _new$( + _$$classRef.pointer, + _id_new$.pointer, + _$defaultConstructorMarker.pointer, + ).object(); + } +} + +extension StringListResult$Companion$$Methods on StringListResult$Companion { + static final _id_fromList = StringListResult$Companion._class.instanceMethodId( + r'fromList', + r'(Ljava/util/List;)Lio/flutter/plugins/sharedpreferences/StringListResult;', + ); + + static final _fromList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `public fun fromList(pigeonVar_list: kotlin.collections.List): io.flutter.plugins.sharedpreferences.StringListResult` + /// The returned object must be released after use, by calling the [release] method. + StringListResult fromList(jni$_.JList list) { + final _$$selfRef = reference; + final _$list = list.reference; + return _fromList( + _$$selfRef.pointer, + _id_fromList.pointer, + _$list.pointer, + ).object(); + } +} + +final class $StringListResult$Companion$Type$ extends jni$_.JType { + @jni$_.internal + const $StringListResult$Companion$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lio/flutter/plugins/sharedpreferences/StringListResult$Companion;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.StringListResult` +extension type StringListResult._(jni$_.JObject _$this) implements jni$_.JObject { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/StringListResult', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = $StringListResult$Type$(); + static final _id_Companion = _class.staticFieldId( + r'Companion', + r'Lio/flutter/plugins/sharedpreferences/StringListResult$Companion;', + ); + + /// from: `static public final io.flutter.plugins.sharedpreferences.StringListResult$Companion Companion` + /// The returned object must be released after use, by calling the [release] method. + static StringListResult$Companion get Companion => + _id_Companion.get(_class, StringListResult$Companion.type) as StringListResult$Companion; + + static final _id_new$ = _class.constructorId( + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;)V', + ); + + static final _new$ = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public void (java.lang.String string, io.flutter.plugins.sharedpreferences.StringListLookupResultType stringListLookupResultType)` + /// The returned object must be released after use, by calling the [release] method. + factory StringListResult( + jni$_.JString? string, + StringListLookupResultType stringListLookupResultType, + ) { + final _$$classRef = _class.reference; + final _$string = string?.reference ?? jni$_.jNullReference; + final _$stringListLookupResultType = stringListLookupResultType.reference; + return _new$( + _$$classRef.pointer, + _id_new$.pointer, + _$string.pointer, + _$stringListLookupResultType.pointer, + ).object(); + } + + static final _id_new$1 = _class.constructorId( + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V', + ); + + static final _new$1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs< + ( + jni$_.Pointer, + jni$_.Pointer, + jni$_.Int32, + jni$_.Pointer, + ) + >, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + core$_.int, + jni$_.Pointer, + ) + >(); + + /// from: `synthetic public void (java.lang.String string, io.flutter.plugins.sharedpreferences.StringListLookupResultType stringListLookupResultType, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker)` + /// The returned object must be released after use, by calling the [release] method. + factory StringListResult.new$1( + jni$_.JString? string, + StringListLookupResultType? stringListLookupResultType, + core$_.int i, + DefaultConstructorMarker? defaultConstructorMarker, + ) { + final _$$classRef = _class.reference; + final _$string = string?.reference ?? jni$_.jNullReference; + final _$stringListLookupResultType = + stringListLookupResultType?.reference ?? jni$_.jNullReference; + final _$defaultConstructorMarker = defaultConstructorMarker?.reference ?? jni$_.jNullReference; + return _new$1( + _$$classRef.pointer, + _id_new$1.pointer, + _$string.pointer, + _$stringListLookupResultType.pointer, + i, + _$defaultConstructorMarker.pointer, + ).object(); + } +} + +extension StringListResult$$Methods on StringListResult { + static final _id_get$jsonEncodedValue = StringListResult._class.instanceMethodId( + r'getJsonEncodedValue', + r'()Ljava/lang/String;', + ); + + static final _get$jsonEncodedValue = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public final java.lang.String getJsonEncodedValue()` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString? get jsonEncodedValue { + final _$$selfRef = reference; + return _get$jsonEncodedValue( + _$$selfRef.pointer, + _id_get$jsonEncodedValue.pointer, + ).object(); + } + + static final _id_get$type$1 = StringListResult._class.instanceMethodId( + r'getType', + r'()Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;', + ); + + static final _get$type$1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public final io.flutter.plugins.sharedpreferences.StringListLookupResultType getType()` + /// The returned object must be released after use, by calling the [release] method. + StringListLookupResultType get type$1 { + final _$$selfRef = reference; + return _get$type$1( + _$$selfRef.pointer, + _id_get$type$1.pointer, + ).object(); + } + + static final _id_toList = StringListResult._class.instanceMethodId( + r'toList', + r'()Ljava/util/List;', + ); + + static final _toList = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public fun toList(): kotlin.collections.List` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JList toList() { + final _$$selfRef = reference; + return _toList(_$$selfRef.pointer, _id_toList.pointer).object>(); + } + + static final _id_equals = StringListResult._class.instanceMethodId( + r'equals', + r'(Ljava/lang/Object;)Z', + ); + + static final _equals = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_CallBooleanMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `public operator fun equals(other: kotlin.Any?): kotlin.Boolean` + core$_.bool equals(jni$_.JObject? object) { + final _$$selfRef = reference; + final _$object = object?.reference ?? jni$_.jNullReference; + return _equals(_$$selfRef.pointer, _id_equals.pointer, _$object.pointer).boolean; + } + + static final _id_hashCode$1 = StringListResult._class.instanceMethodId(r'hashCode', r'()I'); + + static final _hashCode$1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallIntMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public fun hashCode(): kotlin.Int` + core$_.int hashCode$1() { + final _$$selfRef = reference; + return _hashCode$1(_$$selfRef.pointer, _id_hashCode$1.pointer).integer; + } + + static final _id_toString$1 = StringListResult._class.instanceMethodId( + r'toString', + r'()Ljava/lang/String;', + ); + + static final _toString$1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public fun toString(): kotlin.String` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString toString$1() { + final _$$selfRef = reference; + return _toString$1(_$$selfRef.pointer, _id_toString$1.pointer).object(); + } + + static final _id_component1 = StringListResult._class.instanceMethodId( + r'component1', + r'()Ljava/lang/String;', + ); + + static final _component1 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public operator fun component1(): kotlin.String?` + /// The returned object must be released after use, by calling the [release] method. + jni$_.JString? component1() { + final _$$selfRef = reference; + return _component1(_$$selfRef.pointer, _id_component1.pointer).object(); + } + + static final _id_component2 = StringListResult._class.instanceMethodId( + r'component2', + r'()Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;', + ); + + static final _component2 = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public operator fun component2(): io.flutter.plugins.sharedpreferences.StringListLookupResultType` + /// The returned object must be released after use, by calling the [release] method. + StringListLookupResultType component2() { + final _$$selfRef = reference; + return _component2( + _$$selfRef.pointer, + _id_component2.pointer, + ).object(); + } + + static final _id_copy = StringListResult._class.instanceMethodId( + r'copy', + r'(Ljava/lang/String;Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;)Lio/flutter/plugins/sharedpreferences/StringListResult;', + ); + + static final _copy = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer, jni$_.Pointer)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + jni$_.Pointer, + ) + >(); + + /// from: `public fun copy(jsonEncodedValue: kotlin.String?, type: io.flutter.plugins.sharedpreferences.StringListLookupResultType): io.flutter.plugins.sharedpreferences.StringListResult` + /// The returned object must be released after use, by calling the [release] method. + StringListResult copy( + jni$_.JString? string, + StringListLookupResultType stringListLookupResultType, + ) { + final _$$selfRef = reference; + final _$string = string?.reference ?? jni$_.jNullReference; + final _$stringListLookupResultType = stringListLookupResultType.reference; + return _copy( + _$$selfRef.pointer, + _id_copy.pointer, + _$string.pointer, + _$stringListLookupResultType.pointer, + ).object(); + } +} + +final class $StringListResult$Type$ extends jni$_.JType { + @jni$_.internal + const $StringListResult$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lio/flutter/plugins/sharedpreferences/StringListResult;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.StringListLookupResultType$Companion` +extension type StringListLookupResultType$Companion._(jni$_.JObject _$this) + implements jni$_.JObject { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/StringListLookupResultType$Companion', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = + $StringListLookupResultType$Companion$Type$(); + static final _id_new$ = _class.constructorId( + r'(Lkotlin/jvm/internal/DefaultConstructorMarker;)V', + ); + + static final _new$ = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_NewObject') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `synthetic public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker)` + /// The returned object must be released after use, by calling the [release] method. + factory StringListLookupResultType$Companion(DefaultConstructorMarker? defaultConstructorMarker) { + final _$$classRef = _class.reference; + final _$defaultConstructorMarker = defaultConstructorMarker?.reference ?? jni$_.jNullReference; + return _new$( + _$$classRef.pointer, + _id_new$.pointer, + _$defaultConstructorMarker.pointer, + ).object(); + } +} + +extension StringListLookupResultType$Companion$$Methods on StringListLookupResultType$Companion { + static final _id_ofRaw = StringListLookupResultType$Companion._class.instanceMethodId( + r'ofRaw', + r'(I)Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;', + ); + + static final _ofRaw = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Int32,)>, + ) + > + >('globalEnv_CallObjectMethod') + .asFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr, core$_.int) + >(); + + /// from: `public fun ofRaw(raw: kotlin.Int): io.flutter.plugins.sharedpreferences.StringListLookupResultType?` + /// The returned object must be released after use, by calling the [release] method. + StringListLookupResultType? ofRaw(core$_.int i) { + final _$$selfRef = reference; + return _ofRaw(_$$selfRef.pointer, _id_ofRaw.pointer, i).object(); + } +} + +final class $StringListLookupResultType$Companion$Type$ + extends jni$_.JType { + @jni$_.internal + const $StringListLookupResultType$Companion$Type$(); + + @jni$_.internal + @core$_.override + String get signature => + r'Lio/flutter/plugins/sharedpreferences/StringListLookupResultType$Companion;'; +} + +/// from: `io.flutter.plugins.sharedpreferences.StringListLookupResultType` +extension type StringListLookupResultType._(jni$_.JObject _$this) implements Enum { + static final _class = jni$_.JClass.forName( + r'io/flutter/plugins/sharedpreferences/StringListLookupResultType', + ); + + /// The type which includes information such as the signature of this class. + static const jni$_.JType type = $StringListLookupResultType$Type$(); + static final _id_Companion = _class.staticFieldId( + r'Companion', + r'Lio/flutter/plugins/sharedpreferences/StringListLookupResultType$Companion;', + ); + + /// from: `static public final io.flutter.plugins.sharedpreferences.StringListLookupResultType$Companion Companion` + /// The returned object must be released after use, by calling the [release] method. + static StringListLookupResultType$Companion get Companion => + _id_Companion.get(_class, StringListLookupResultType$Companion.type) + as StringListLookupResultType$Companion; + + static final _id_PLATFORM_ENCODED = _class.staticFieldId( + r'PLATFORM_ENCODED', + r'Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;', + ); + + /// from: `static public final io.flutter.plugins.sharedpreferences.StringListLookupResultType PLATFORM_ENCODED` + /// The returned object must be released after use, by calling the [release] method. + static StringListLookupResultType get PLATFORM_ENCODED => + _id_PLATFORM_ENCODED.get(_class, StringListLookupResultType.type) + as StringListLookupResultType; + + static final _id_JSON_ENCODED = _class.staticFieldId( + r'JSON_ENCODED', + r'Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;', + ); + + /// from: `static public final io.flutter.plugins.sharedpreferences.StringListLookupResultType JSON_ENCODED` + /// The returned object must be released after use, by calling the [release] method. + static StringListLookupResultType get JSON_ENCODED => + _id_JSON_ENCODED.get(_class, StringListLookupResultType.type) as StringListLookupResultType; + + static final _id_UNEXPECTED_STRING = _class.staticFieldId( + r'UNEXPECTED_STRING', + r'Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;', + ); + + /// from: `static public final io.flutter.plugins.sharedpreferences.StringListLookupResultType UNEXPECTED_STRING` + /// The returned object must be released after use, by calling the [release] method. + static StringListLookupResultType get UNEXPECTED_STRING => + _id_UNEXPECTED_STRING.get(_class, StringListLookupResultType.type) + as StringListLookupResultType; + + static final _id_values = _class.staticMethodId( + r'values', + r'()[Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;', + ); + + static final _values = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallStaticObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `static public io.flutter.plugins.sharedpreferences.StringListLookupResultType[] values()` + /// The returned object must be released after use, by calling the [release] method. + static jni$_.JArray? values() { + final _$$classRef = _class.reference; + return _values( + _$$classRef.pointer, + _id_values.pointer, + ).object?>(); + } + + static final _id_valueOf = _class.staticMethodId( + r'valueOf', + r'(Ljava/lang/String;)Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;', + ); + + static final _valueOf = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.VarArgs<(jni$_.Pointer,)>, + ) + > + >('globalEnv_CallStaticObjectMethod') + .asFunction< + jni$_.JniResult Function( + jni$_.Pointer, + jni$_.JMethodIDPtr, + jni$_.Pointer, + ) + >(); + + /// from: `static public io.flutter.plugins.sharedpreferences.StringListLookupResultType valueOf(java.lang.String string)` + /// The returned object must be released after use, by calling the [release] method. + static StringListLookupResultType? valueOf(jni$_.JString? string) { + final _$$classRef = _class.reference; + final _$string = string?.reference ?? jni$_.jNullReference; + return _valueOf( + _$$classRef.pointer, + _id_valueOf.pointer, + _$string.pointer, + ).object(); + } + + static final _id_get$entries = _class.staticMethodId( + r'getEntries', + r'()Lkotlin/enums/EnumEntries;', + ); + + static final _get$entries = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallStaticObjectMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `static public kotlin.enums.EnumEntries getEntries()` + /// The returned object must be released after use, by calling the [release] method. + static EnumEntries get entries { + final _$$classRef = _class.reference; + return _get$entries(_$$classRef.pointer, _id_get$entries.pointer).object(); + } +} + +extension StringListLookupResultType$$Methods on StringListLookupResultType { + static final _id_get$raw = StringListLookupResultType._class.instanceMethodId(r'getRaw', r'()I'); + + static final _get$raw = + jni$_.ProtectedJniExtensions.lookup< + jni$_.NativeFunction< + jni$_.JniResult Function(jni$_.Pointer, jni$_.JMethodIDPtr) + > + >('globalEnv_CallIntMethod') + .asFunction, jni$_.JMethodIDPtr)>(); + + /// from: `public final int getRaw()` + core$_.int get raw { + final _$$selfRef = reference; + return _get$raw(_$$selfRef.pointer, _id_get$raw.pointer).integer; + } +} + +final class $StringListLookupResultType$Type$ extends jni$_.JType { + @jni$_.internal + const $StringListLookupResultType$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lio/flutter/plugins/sharedpreferences/StringListLookupResultType;'; +} + +/// from: `java.lang.RuntimeException` +/// +/// WARNING: RuntimeException is a stub. To generate bindings for this class, include +/// java.lang.RuntimeException in your config's classes list. +/// +extension type RuntimeException._(jni$_.JObject _$this) implements jni$_.JObject { + static const jni$_.JType type = $RuntimeException$Type$(); +} + +final class $RuntimeException$Type$ extends jni$_.JType { + @jni$_.internal + const $RuntimeException$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Ljava/lang/RuntimeException;'; +} + +/// from: `kotlin.jvm.internal.DefaultConstructorMarker` +/// +/// WARNING: DefaultConstructorMarker is a stub. To generate bindings for this class, include +/// kotlin.jvm.internal.DefaultConstructorMarker in your config's classes list. +/// +extension type DefaultConstructorMarker._(jni$_.JObject _$this) implements jni$_.JObject { + static const jni$_.JType type = $DefaultConstructorMarker$Type$(); +} + +final class $DefaultConstructorMarker$Type$ extends jni$_.JType { + @jni$_.internal + const $DefaultConstructorMarker$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lkotlin/jvm/internal/DefaultConstructorMarker;'; +} + +/// from: `java.lang.Enum` +/// +/// WARNING: Enum is a stub. To generate bindings for this class, include +/// java.lang.Enum in your config's classes list. +/// +extension type Enum._(jni$_.JObject _$this) implements jni$_.JObject { + static const jni$_.JType type = $Enum$Type$(); +} + +final class $Enum$Type$ extends jni$_.JType { + @jni$_.internal + const $Enum$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Ljava/lang/Enum;'; +} + +/// from: `kotlin.enums.EnumEntries` +/// +/// WARNING: EnumEntries is a stub. To generate bindings for this class, include +/// kotlin.enums.EnumEntries in your config's classes list. +/// +extension type EnumEntries._(jni$_.JObject _$this) implements jni$_.JObject { + static const jni$_.JType type = $EnumEntries$Type$(); +} + +final class $EnumEntries$Type$ extends jni$_.JType { + @jni$_.internal + const $EnumEntries$Type$(); + + @jni$_.internal + @core$_.override + String get signature => r'Lkotlin/enums/EnumEntries;'; +} diff --git a/packages/shared_preferences/shared_preferences_android/lib/src/shared_preferences_android.dart b/packages/shared_preferences/shared_preferences_android/lib/src/shared_preferences_android.dart index 48f57ee6b9d3..536173922414 100644 --- a/packages/shared_preferences/shared_preferences_android/lib/src/shared_preferences_android.dart +++ b/packages/shared_preferences/shared_preferences_android/lib/src/shared_preferences_android.dart @@ -19,7 +19,7 @@ import 'strings.dart'; class SharedPreferencesAndroid extends SharedPreferencesStorePlatform { /// Creates a new plugin implementation instance. SharedPreferencesAndroid({@visibleForTesting SharedPreferencesApi? api}) - : api = api ?? SharedPreferencesApi(); + : api = api ?? SharedPreferencesApi.createWithNativeInteropApi(); /// The pigeon API used to send messages to the platform. @visibleForTesting diff --git a/packages/shared_preferences/shared_preferences_android/pigeons/messages.dart b/packages/shared_preferences/shared_preferences_android/pigeons/messages.dart index bfcc3793d291..d883f764424a 100644 --- a/packages/shared_preferences/shared_preferences_android/pigeons/messages.dart +++ b/packages/shared_preferences/shared_preferences_android/pigeons/messages.dart @@ -11,7 +11,11 @@ import 'package:pigeon/pigeon.dart'; PigeonOptions( input: 'pigeons/messages.dart', kotlinOut: 'android/src/main/kotlin/io/flutter/plugins/sharedpreferences/Messages.g.kt', - kotlinOptions: KotlinOptions(package: 'io.flutter.plugins.sharedpreferences'), + kotlinOptions: KotlinOptions( + package: 'io.flutter.plugins.sharedpreferences', + useJni: true, + appDirectory: 'example/', + ), dartOut: 'lib/src/messages.g.dart', copyrightHeader: 'pigeons/copyright.txt', ), @@ -19,40 +23,31 @@ import 'package:pigeon/pigeon.dart'; @HostApi() abstract class SharedPreferencesApi { /// Removes property from shared preferences data set. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool remove(String key); /// Adds property to shared preferences data set of type `bool`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool setBool(String key, bool value); /// Adds property to shared preferences data set of type `String`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool setString(String key, String value); /// Adds property to shared preferences data set of type `int`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool setInt(String key, int value); /// Adds property to shared preferences data set of type `double`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool setDouble(String key, double value); /// Adds property to shared preferences data set of type `List`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool setEncodedStringList(String key, String value); /// Adds property to shared preferences data set of type `List`. /// /// Deprecated, this is only here for testing purposes. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool setDeprecatedStringList(String key, List value); /// Removes all properties from shared preferences data set with matching prefix. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool clear(String prefix, List? allowList); /// Gets all properties from shared preferences data set with matching prefix. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) Map getAll(String prefix, List? allowList); } diff --git a/packages/shared_preferences/shared_preferences_android/pigeons/messages_async.dart b/packages/shared_preferences/shared_preferences_android/pigeons/messages_async.dart index d8e89de3f902..00aa0deca508 100644 --- a/packages/shared_preferences/shared_preferences_android/pigeons/messages_async.dart +++ b/packages/shared_preferences/shared_preferences_android/pigeons/messages_async.dart @@ -11,6 +11,8 @@ import 'package:pigeon/pigeon.dart'; kotlinOptions: KotlinOptions( package: 'io.flutter.plugins.sharedpreferences', errorClassName: 'SharedPreferencesError', + useJni: true, + appDirectory: 'example/', ), dartOut: 'lib/src/messages_async.g.dart', copyrightHeader: 'pigeons/copyright.txt', @@ -50,29 +52,23 @@ class StringListResult { @HostApi() abstract class SharedPreferencesAsyncApi { /// Adds property to shared preferences data set of type `bool`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) void setBool(String key, bool value, SharedPreferencesPigeonOptions options); /// Adds property to shared preferences data set of type `String`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) void setString(String key, String value, SharedPreferencesPigeonOptions options); /// Adds property to shared preferences data set of type `int`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) void setInt(String key, int value, SharedPreferencesPigeonOptions options); /// Adds property to shared preferences data set of type `double`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) void setDouble(String key, double value, SharedPreferencesPigeonOptions options); /// Adds property to shared preferences data set of type `List`. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) void setEncodedStringList(String key, String value, SharedPreferencesPigeonOptions options); /// Adds property to shared preferences data set of type `List`. /// /// Deprecated, this is only here for testing purposes. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) void setDeprecatedStringList( String key, List value, @@ -80,38 +76,29 @@ abstract class SharedPreferencesAsyncApi { ); /// Gets individual String value stored with [key], if any. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) String? getString(String key, SharedPreferencesPigeonOptions options); /// Gets individual void value stored with [key], if any. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool? getBool(String key, SharedPreferencesPigeonOptions options); /// Gets individual double value stored with [key], if any. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) double? getDouble(String key, SharedPreferencesPigeonOptions options); /// Gets individual int value stored with [key], if any. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) int? getInt(String key, SharedPreferencesPigeonOptions options); /// Gets individual `List` value stored with [key], if any. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) List? getPlatformEncodedStringList(String key, SharedPreferencesPigeonOptions options); /// Gets the JSON-encoded `List` value stored with [key], if any. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) StringListResult? getStringList(String key, SharedPreferencesPigeonOptions options); /// Removes all properties from shared preferences data set with matching prefix. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) void clear(List? allowList, SharedPreferencesPigeonOptions options); /// Gets all properties from shared preferences data set with matching prefix. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) Map getAll(List? allowList, SharedPreferencesPigeonOptions options); /// Gets all properties from shared preferences data set with matching prefix. - @TaskQueue(type: TaskQueueType.serialBackgroundThread) List getKeys(List? allowList, SharedPreferencesPigeonOptions options); } diff --git a/packages/shared_preferences/shared_preferences_android/pubspec.yaml b/packages/shared_preferences/shared_preferences_android/pubspec.yaml index 8f152209487a..5843a1bd271b 100644 --- a/packages/shared_preferences/shared_preferences_android/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_android/pubspec.yaml @@ -20,13 +20,19 @@ flutter: dependencies: flutter: sdk: flutter + jni: ^1.0.0 meta: ^1.10.0 shared_preferences_platform_interface: ^2.4.0 dev_dependencies: flutter_test: sdk: flutter - pigeon: ^26.3.4 + jnigen: ^0.17.0 + pigeon: + git: + url: https://github.com/tarrinneal/packages.git + path: packages/pigeon + ref: Kamyshin topics: - persistence diff --git a/packages/shared_preferences/shared_preferences_android/tool/pigeon/messages_async_jnigen_config.dart b/packages/shared_preferences/shared_preferences_android/tool/pigeon/messages_async_jnigen_config.dart new file mode 100644 index 000000000000..68c874757d1c --- /dev/null +++ b/packages/shared_preferences/shared_preferences_android/tool/pigeon/messages_async_jnigen_config.dart @@ -0,0 +1,34 @@ +// Autogenerated from Pigeon (v27.4.0), do not edit directly. +// See also: https://pub.dev/packages/pigeon +// ignore_for_file: depend_on_referenced_packages + +import 'dart:io'; +import 'package:jnigen/jnigen.dart'; +import 'package:logging/logging.dart'; + +void main() async { + Directory.current = Platform.script.resolve('../..').toFilePath(); + await generateJniBindings( + Config( + androidSdkConfig: AndroidSdkConfig(addGradleDeps: true, androidExample: './example/'), + summarizerOptions: SummarizerOptions(backend: SummarizerBackend.asm), + outputConfig: OutputConfig( + dartConfig: DartCodeOutputConfig( + path: Uri.file('lib/src/messages_async.g.jni.dart'), + structure: OutputStructure.singleFile, + ), + ), + logLevel: Level.ALL, + classPath: [Uri.directory('build/app/tmp/kotlin-classes/release')], + + classes: [ + 'io.flutter.plugins.sharedpreferences.SharedPreferencesError', + 'io.flutter.plugins.sharedpreferences.SharedPreferencesAsyncApi', + 'io.flutter.plugins.sharedpreferences.SharedPreferencesAsyncApiRegistrar', + 'io.flutter.plugins.sharedpreferences.SharedPreferencesPigeonOptions', + 'io.flutter.plugins.sharedpreferences.StringListResult', + 'io.flutter.plugins.sharedpreferences.StringListLookupResultType', + ], + ), + ); +} diff --git a/packages/shared_preferences/shared_preferences_android/tool/pigeon/messages_jnigen_config.dart b/packages/shared_preferences/shared_preferences_android/tool/pigeon/messages_jnigen_config.dart new file mode 100644 index 000000000000..e034c86322c4 --- /dev/null +++ b/packages/shared_preferences/shared_preferences_android/tool/pigeon/messages_jnigen_config.dart @@ -0,0 +1,35 @@ +// Autogenerated from Pigeon (v27.4.0), do not edit directly. +// See also: https://pub.dev/packages/pigeon +// ignore_for_file: depend_on_referenced_packages + +import 'dart:io'; +import 'package:jnigen/jnigen.dart'; +import 'package:logging/logging.dart'; + +void main() async { + Directory.current = Platform.script.resolve('../..').toFilePath(); + await generateJniBindings( + Config( + androidSdkConfig: AndroidSdkConfig( + addGradleDeps: true, + androidExample: './example/', + ), + summarizerOptions: SummarizerOptions(backend: SummarizerBackend.asm), + outputConfig: OutputConfig( + dartConfig: DartCodeOutputConfig( + path: Uri.file('lib/src/messages.g.jni.dart'), + structure: OutputStructure.singleFile, + ), + ), + logLevel: Level.ALL, + classPath: [Uri.directory('build/app/tmp/kotlin-classes/release')], + + classes: [ + 'io.flutter.plugins.sharedpreferences.FlutterError', + 'io.flutter.plugins.sharedpreferences.SharedPreferencesApi', + 'io.flutter.plugins.sharedpreferences.SharedPreferencesApiRegistrar', + ], + ), + ); + +} diff --git a/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation.podspec b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation.podspec index f6dcaed366f2..b92e6594df71 100644 --- a/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation.podspec +++ b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation.podspec @@ -12,7 +12,7 @@ Wraps NSUserDefaults, providing a persistent store for simple key-value pairs. s.license = { :type => 'BSD', :file => '../LICENSE' } s.author = { 'Flutter Team' => 'flutter-dev@googlegroups.com' } s.source = { :http => 'https://github.com/flutter/packages/tree/main/packages/shared_preferences/shared_preferences_foundation' } - s.source_files = 'shared_preferences_foundation/Sources/shared_preferences_foundation/**/*.swift' + s.source_files = 'shared_preferences_foundation/Sources/**/*.{swift,m,h}' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '13.0' diff --git a/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Package.swift b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Package.swift index 1cd586e01e0d..6797fa1e2181 100644 --- a/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Package.swift +++ b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Package.swift @@ -18,11 +18,16 @@ let package = Package( dependencies: [], targets: [ .target( - name: "shared_preferences_foundation", + name: "shared_preferences_foundation_objc_gen", dependencies: [], + publicHeadersPath: "." + ), + .target( + name: "shared_preferences_foundation", + dependencies: ["shared_preferences_foundation_objc_gen"], resources: [ .process("Resources") ] - ) + ), ] ) diff --git a/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/SharedPreferencesPlugin.swift b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/SharedPreferencesPlugin.swift index e6c749b9bd8b..fddaaf940eb8 100644 --- a/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/SharedPreferencesPlugin.swift +++ b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/SharedPreferencesPlugin.swift @@ -16,13 +16,7 @@ public class LegacySharedPreferencesPlugin: NSObject, FlutterPlugin, LegacyUserD public static func register(with registrar: FlutterPluginRegistrar) { let instance = LegacySharedPreferencesPlugin() - // Workaround for https://github.com/flutter/flutter/issues/118103. - #if os(iOS) - let messenger = registrar.messenger() - #else - let messenger = registrar.messenger - #endif - LegacyUserDefaultsApiSetup.setUp(binaryMessenger: messenger, api: instance) + LegacyUserDefaultsApiSetup.register(api: instance) } func getAll(prefix: String, allowList: [String]?) -> [String: Any] { @@ -74,13 +68,7 @@ public class SharedPreferencesPlugin: NSObject, FlutterPlugin, UserDefaultsApi { public static func register(with registrar: FlutterPluginRegistrar) { let instance = SharedPreferencesPlugin() - // Workaround for https://github.com/flutter/flutter/issues/118103. - #if os(iOS) - let messenger = registrar.messenger() - #else - let messenger = registrar.messenger - #endif - UserDefaultsApiSetup.setUp(binaryMessenger: messenger, api: instance) + UserDefaultsApiSetup.register(api: instance) LegacySharedPreferencesPlugin.register(with: registrar) } diff --git a/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/messages.g.swift b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/messages.g.swift index 33fc9fbeb303..780654788488 100644 --- a/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/messages.g.swift +++ b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/messages.g.swift @@ -1,26 +1,20 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.1.0), do not edit directly. +// Autogenerated from Pigeon (v27.4.0), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation -#if os(iOS) - import Flutter -#elseif os(macOS) - import FlutterMacOS -#else - #error("Unsupported platform.") -#endif - /// Error class for passing custom error details to Dart side. -final class PigeonError: Error { - let code: String - let message: String? - let details: Sendable? +@objc final class PigeonError: NSObject, Error { + @objc var code: String? + @objc var message: String? + @objc var details: String? + + @objc override init() {} - init(code: String, message: String?, details: Sendable?) { + @objc init(code: String?, message: String?, details: String?) { self.code = code self.message = message self.details = details @@ -28,109 +22,292 @@ final class PigeonError: Error { var localizedDescription: String { return - "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" + "PigeonError(code: \(code ?? ""), message: \(message ?? ""), details: \(details ?? ""))" } } -private func wrapResult(_ result: Any?) -> [Any?] { - return [result] -} +// A wrapper around NSNumber that preserves the original primitive/enum type across FFI. +@objc class MessagesNumberWrapper: NSObject, NSCopying { + @objc required init( + number: NSNumber, + type: Int, + ) { + self.number = number + self.type = type + } + func copy(with zone: NSZone? = nil) -> Any { + return Self(number: number, type: type) + } + @objc var number: NSNumber + @objc var type: Int + static func == (lhs: MessagesNumberWrapper, rhs: MessagesNumberWrapper) -> Bool { + return lhs.number == rhs.number && lhs.type == rhs.type + } -private func wrapError(_ error: Any) -> [Any?] { - if let pigeonError = error as? PigeonError { - return [ - pigeonError.code, - pigeonError.message, - pigeonError.details, - ] + override func isEqual(_ object: Any?) -> Bool { + guard let other = object as? MessagesNumberWrapper else { + return false + } + return self == other } - if let flutterError = error as? FlutterError { - return [ - flutterError.code, - flutterError.message, - flutterError.details, - ] + + override var hash: Int { + return number.hashValue ^ type.hashValue } - return [ - "\(error)", - "\(type(of: error))", - "Stacktrace: \(Thread.callStackSymbols)", - ] + } -private func isNullish(_ value: Any?) -> Bool { - return value is NSNull || value == nil +private func wrapNumber(number: Any) -> MessagesNumberWrapper { + switch number { + case let value as Int: + return MessagesNumberWrapper(number: NSNumber(value: value), type: 1) + case let value as Int64: + return MessagesNumberWrapper(number: NSNumber(value: value), type: 1) + case let value as Double: + return MessagesNumberWrapper(number: NSNumber(value: value), type: 2) + case let value as Float: + return MessagesNumberWrapper(number: NSNumber(value: value), type: 2) + case let value as Bool: + return MessagesNumberWrapper(number: NSNumber(value: value), type: 3) + + default: + return MessagesNumberWrapper(number: NSNumber(value: 0), type: 0) + } } -private func nilOrValue(_ value: Any?) -> T? { - if value is NSNull { return nil } - return value as! T? +private func unwrapNumber(wrappedNumber: MessagesNumberWrapper) -> Any { + switch wrappedNumber.type { + case 1: + return wrappedNumber.number.int64Value + case 2: + return wrappedNumber.number.doubleValue + case 3: + return wrappedNumber.number.boolValue + default: + return wrappedNumber.number.int64Value + } +} +// Enum to represent the Dart TypedData types +enum MessagesPigeonInternalNumberType: Int { + case uint8 = 0 + case int32 = 1 + case int64 = 2 + case float32 = 3 + case float64 = 4 } -func deepEqualsmessages(_ lhs: Any?, _ rhs: Any?) -> Bool { - let cleanLhs = nilOrValue(lhs) as Any? - let cleanRhs = nilOrValue(rhs) as Any? - switch (cleanLhs, cleanRhs) { - case (nil, nil): - return true +@objc public class MessagesPigeonTypedData: NSObject { + @objc public let data: NSData + @objc public let type: Int - case (nil, _), (_, nil): - return false + @objc public init(data: NSData, type: Int) { + self.data = data + self.type = type + } - case is (Void, Void): - return true + public init(_ data: [UInt8]) { + self.data = NSData(bytes: data, length: data.count) + self.type = MessagesPigeonInternalNumberType.uint8.rawValue + } - case let (cleanLhsHashable, cleanRhsHashable) as (AnyHashable, AnyHashable): - return cleanLhsHashable == cleanRhsHashable + public init(_ data: [Int32]) { + self.data = NSData(bytes: data, length: data.count * MemoryLayout.size) + self.type = MessagesPigeonInternalNumberType.int32.rawValue + } - case let (cleanLhsArray, cleanRhsArray) as ([Any?], [Any?]): - guard cleanLhsArray.count == cleanRhsArray.count else { return false } - for (index, element) in cleanLhsArray.enumerated() { - if !deepEqualsmessages(element, cleanRhsArray[index]) { - return false - } + public init(_ data: [Int64]) { + self.data = NSData(bytes: data, length: data.count * MemoryLayout.size) + self.type = MessagesPigeonInternalNumberType.int64.rawValue + } + + public init(_ data: [Float32]) { + self.data = NSData(bytes: data, length: data.count * MemoryLayout.size) + self.type = MessagesPigeonInternalNumberType.float32.rawValue + } + + public init(_ data: [Float64]) { + self.data = NSData(bytes: data, length: data.count * MemoryLayout.size) + self.type = MessagesPigeonInternalNumberType.float64.rawValue + } + + /// Returns the data as a [UInt8] array, if the type is .uint8 + public func toUint8Array() -> [UInt8]? { + guard type == MessagesPigeonInternalNumberType.uint8.rawValue else { return nil } + return [UInt8](data as Data) + } + + /// Returns the data as a [Int32] array, if the type is .int32 + public func toInt32Array() -> [Int32]? { + guard type == MessagesPigeonInternalNumberType.int32.rawValue else { return nil } + guard data.length % MemoryLayout.size == 0 else { return nil } + let count = data.length / MemoryLayout.size + var array = [Int32](repeating: 0, count: count) + data.getBytes(&array, length: data.length) + return array + } + + /// Returns the data as a [Int64] array, if the type is .int64 + public func toInt64Array() -> [Int64]? { + guard type == MessagesPigeonInternalNumberType.int64.rawValue else { return nil } + guard data.length % MemoryLayout.size == 0 else { return nil } + let count = data.length / MemoryLayout.size + var array = [Int64](repeating: 0, count: count) + data.getBytes(&array, length: data.length) + return array + } + + /// Returns the data as a [Float32] array, if the type is .float32 + public func toFloat32Array() -> [Float32]? { + guard type == MessagesPigeonInternalNumberType.float32.rawValue else { return nil } + guard data.length % MemoryLayout.size == 0 else { return nil } + let count = data.length / MemoryLayout.size + var array = [Float32](repeating: 0, count: count) + data.getBytes(&array, length: data.length) + return array + } + + /// Returns the data as a [Float64] array (Array), if the type is .float64 + public func toFloat64Array() -> [Double]? { + guard type == MessagesPigeonInternalNumberType.float64.rawValue else { return nil } + guard data.length % MemoryLayout.size == 0 else { return nil } + let count = data.length / MemoryLayout.size + var array = [Double](repeating: 0, count: count) + data.getBytes(&array, length: data.length) + return array + } +} + +enum MessagesPigeonInternal { + static let defaultInstanceName = "PigeonDefaultClassName32uh4ui3lh445uh4h3l2l455g4y34u" + static func isNullish(_ value: Any?) -> Bool { + guard let innerValue = value else { + return true } - return true - case let (cleanLhsDictionary, cleanRhsDictionary) as ([AnyHashable: Any?], [AnyHashable: Any?]): - guard cleanLhsDictionary.count == cleanRhsDictionary.count else { return false } - for (key, cleanLhsValue) in cleanLhsDictionary { - guard cleanRhsDictionary.index(forKey: key) != nil else { return false } - if !deepEqualsmessages(cleanLhsValue, cleanRhsDictionary[key]!) { - return false - } + if case Optional.some(Optional.none) = value { + return true } - return true - default: - // Any other type shouldn't be able to be used with pigeon. File an issue if you find this to be untrue. - return false + return innerValue is NSNull || innerValue is MessagesPigeonInternalNull + } + static func doubleEquals(_ lhs: Double, _ rhs: Double) -> Bool { + return (lhs.isNaN && rhs.isNaN) || lhs == rhs } -} -func deepHashmessages(value: Any?, hasher: inout Hasher) { - if let valueList = value as? [AnyHashable] { - for item in valueList { deepHashmessages(value: item, hasher: &hasher) } - return + static func doubleHash(_ value: Double, _ hasher: inout Hasher) { + if value.isNaN { + hasher.combine(0x7FF8_0000_0000_0000) + } else { + // Normalize -0.0 to 0.0 + hasher.combine(value == 0 ? 0 : value) + } } - if let valueDict = value as? [AnyHashable: AnyHashable] { - for key in valueDict.keys { - hasher.combine(key) - deepHashmessages(value: valueDict[key]!, hasher: &hasher) + static func deepEquals(_ lhs: Any?, _ rhs: Any?) -> Bool { + let cleanLhs = nilOrValue(lhs) as Any? + let cleanRhs = nilOrValue(rhs) as Any? + switch (cleanLhs, cleanRhs) { + case (nil, nil): + return true + + case (nil, _), (_, nil): + return false + + case (let lhs as AnyObject, let rhs as AnyObject) where lhs === rhs: + return true + + case is (Void, Void): + return true + + case (let lhsArray, let rhsArray) as ([Double], [Double]): + guard lhsArray.count == rhsArray.count else { return false } + for (index, element) in lhsArray.enumerated() { + if !doubleEquals(element, rhsArray[index]) { + return false + } + } + return true + + case (let lhsArray, let rhsArray) as ([Any?], [Any?]): + guard lhsArray.count == rhsArray.count else { return false } + for (index, element) in lhsArray.enumerated() { + if !deepEquals(element, rhsArray[index]) { + return false + } + } + return true + + case (let lhsDictionary, let rhsDictionary) as ([AnyHashable: Any?], [AnyHashable: Any?]): + guard lhsDictionary.count == rhsDictionary.count else { return false } + for (lhsKey, lhsValue) in lhsDictionary { + var found = false + for (rhsKey, rhsValue) in rhsDictionary { + if deepEquals(lhsKey, rhsKey) { + if deepEquals(lhsValue, rhsValue) { + found = true + break + } else { + return false + } + } + } + if !found { return false } + } + return true + + case (let lhs as Double, let rhs as Double): + return doubleEquals(lhs, rhs) + + case (let lhsHashable, let rhsHashable) as (AnyHashable, AnyHashable): + return lhsHashable == rhsHashable + + default: + return false } - return } - if let hashableValue = value as? AnyHashable { - hasher.combine(hashableValue.hashValue) + static func deepHash(value: Any?, hasher: inout Hasher) { + let cleanValue = nilOrValue(value) as Any? + if let cleanValue = cleanValue { + if let doubleValue = cleanValue as? Double { + doubleHash(doubleValue, &hasher) + } else if let valueList = cleanValue as? [Any?] { + for item in valueList { + deepHash(value: item, hasher: &hasher) + } + } else if let valueList = cleanValue as? [Double] { + for item in valueList { + doubleHash(item, &hasher) + } + } else if let valueDict = cleanValue as? [AnyHashable: Any?] { + var result = 0 + for (key, value) in valueDict { + var entryKeyHasher = Hasher() + deepHash(value: key, hasher: &entryKeyHasher) + var entryValueHasher = Hasher() + deepHash(value: value, hasher: &entryValueHasher) + result = result &+ ((entryKeyHasher.finalize() &* 31) ^ entryValueHasher.finalize()) + } + hasher.combine(result) + } else if let hashableValue = cleanValue as? AnyHashable { + hasher.combine(hashableValue) + } else { + hasher.combine(String(describing: cleanValue)) + } + } else { + hasher.combine(0) + } } - return hasher.combine(String(describing: value)) +} + +private func nilOrValue(_ value: Any?) -> T? { + if value is NSNull { return nil } + return value as! T? } /// Generated class from Pigeon that represents data sent in messages. -struct SharedPreferencesPigeonOptions: Hashable { +struct SharedPreferencesPigeonOptions: Hashable, CustomStringConvertible { var suiteName: String? = nil // swift-format-ignore: AlwaysUseLowerCamelCase @@ -148,47 +325,177 @@ struct SharedPreferencesPigeonOptions: Hashable { } static func == (lhs: SharedPreferencesPigeonOptions, rhs: SharedPreferencesPigeonOptions) -> Bool { - return deepEqualsmessages(lhs.toList(), rhs.toList()) + if Swift.type(of: lhs) != Swift.type(of: rhs) { + return false + } + return MessagesPigeonInternal.deepEquals(lhs.suiteName, rhs.suiteName) } + func hash(into hasher: inout Hasher) { - deepHashmessages(value: toList(), hasher: &hasher) + hasher.combine("SharedPreferencesPigeonOptions") + MessagesPigeonInternal.deepHash(value: suiteName, hasher: &hasher) } -} -private class MessagesPigeonCodecReader: FlutterStandardReader { - override func readValue(ofType type: UInt8) -> Any? { - switch type { - case 129: - return SharedPreferencesPigeonOptions.fromList(self.readValue() as! [Any?]) - default: - return super.readValue(ofType: type) - } + public var description: String { + return "SharedPreferencesPigeonOptions(suiteName: \(String(describing: suiteName)))" } } -private class MessagesPigeonCodecWriter: FlutterStandardWriter { - override func writeValue(_ value: Any) { - if let value = value as? SharedPreferencesPigeonOptions { - super.writeByte(129) - super.writeValue(value.toList()) - } else { - super.writeValue(value) +/// Generated bridge class from Pigeon that moves data from Swift to Objective-C. +@objc class SharedPreferencesPigeonOptionsBridge: NSObject { + @objc init( + suiteName: NSString? = nil + ) { + self.suiteName = suiteName + } + @objc var suiteName: NSString? = nil + + // swift-format-ignore: AlwaysUseLowerCamelCase + static func fromSwift(_ pigeonVar_Class: SharedPreferencesPigeonOptions?) + -> SharedPreferencesPigeonOptionsBridge? + { + if MessagesPigeonInternal.isNullish(pigeonVar_Class) { + return nil } + return SharedPreferencesPigeonOptionsBridge( + suiteName: pigeonVar_Class!.suiteName as NSString?, + ) + } + func toSwift() -> SharedPreferencesPigeonOptions { + return SharedPreferencesPigeonOptions( + suiteName: suiteName as String?, + ) } } -private class MessagesPigeonCodecReaderWriter: FlutterStandardReaderWriter { - override func reader(with data: Data) -> FlutterStandardReader { - return MessagesPigeonCodecReader(data: data) +@objc class MessagesPigeonInternalNull: NSObject {} + +class _PigeonFfiCodec { + static func readValue(value: NSObject?, type: String? = nil, type2: String? = nil) -> Any? { + if MessagesPigeonInternal.isNullish(value) { + return nil + } + if let typedData = value as? MessagesPigeonTypedData { + switch typedData.type { + case MessagesPigeonInternalNumberType.uint8.rawValue: + return typedData.toUint8Array() + case MessagesPigeonInternalNumberType.int32.rawValue: + return typedData.toInt32Array() + case MessagesPigeonInternalNumberType.int64.rawValue: + return typedData.toInt64Array() + case MessagesPigeonInternalNumberType.float32.rawValue: + return typedData.toFloat32Array() + case MessagesPigeonInternalNumberType.float64.rawValue: + return typedData.toFloat64Array() + default: + return typedData + } + } + if value is NSNumber { + let number = value as! NSNumber + if type == "int" || type == "int64" { + return number.int64Value + } else if type == "double" { + return number.doubleValue + } else if type == "bool" { + return number.boolValue + } + + return number.int64Value + } + if value is NSMutableArray || value is NSArray { + var res: [Any?] = [] + for item in (value as! NSArray) { + res.append(readValue(value: item as? NSObject, type: type)) + } + return res + } + if value is NSDictionary { + var res: [AnyHashable?: Any?] = Dictionary() + for (key, value) in (value as! NSDictionary) { + res[readValue(value: key as? NSObject, type: type) as? AnyHashable] = readValue( + value: value as? NSObject, type: type2) + } + return res + } + if value is MessagesNumberWrapper { + return unwrapNumber(wrappedNumber: value as! MessagesNumberWrapper) + } + if value is NSString { + return value as! NSString + } else if value is SharedPreferencesPigeonOptionsBridge { + return (value! as! SharedPreferencesPigeonOptionsBridge).toSwift() + + } + return value } - override func writer(with data: NSMutableData) -> FlutterStandardWriter { - return MessagesPigeonCodecWriter(data: data) + static func writeValue(value: Any?, isObject: Bool = false) -> Any? { + if MessagesPigeonInternal.isNullish(value) { + return MessagesPigeonInternalNull() + } + if let uint8Array = value as? [UInt8] { + return isObject ? MessagesPigeonTypedData(uint8Array) : uint8Array as NSArray + } + if let int32Array = value as? [Int32] { + return isObject ? MessagesPigeonTypedData(int32Array) : int32Array as NSArray + } + if let int64Array = value as? [Int64] { + return isObject ? MessagesPigeonTypedData(int64Array) : int64Array as NSArray + } + if let float32Array = value as? [Float32] { + return isObject ? MessagesPigeonTypedData(float32Array) : float32Array as NSArray + } + if let float64Array = value as? [Double] { + return isObject ? MessagesPigeonTypedData(float64Array) : float64Array as NSArray + } + if value is Bool || value is Double || value is Int || value is Int64 { + if isObject { + return wrapNumber(number: value!) + } + if value is Bool { + return value + } else if value is Double { + return value + } else if value is Int || value is Int64 { + return value + } + + } + if value is [Any] { + let list = value as! [Any] + let res: NSMutableArray = NSMutableArray(capacity: list.count) + for item in list { + res.add( + MessagesPigeonInternal.isNullish(item) + ? MessagesPigeonInternalNull() : writeValue(value: item, isObject: true) as! NSObject) + } + return res + } + if value is [AnyHashable: Any] { + let dict = value as! [AnyHashable: Any] + let res: NSMutableDictionary = NSMutableDictionary(capacity: dict.count) + for (key, value) in dict { + res.setObject( + MessagesPigeonInternal.isNullish(key) + ? MessagesPigeonInternalNull() : writeValue(value: value, isObject: true) as! NSObject, + forKey: writeValue(value: key, isObject: true) as! NSCopying) + } + return res + } + if value is String { + return value as! NSString + } else if value is SharedPreferencesPigeonOptions { + return SharedPreferencesPigeonOptionsBridge.fromSwift( + value as? SharedPreferencesPigeonOptions) + + } + return value } } -class MessagesPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { - static let shared = MessagesPigeonCodec(readerWriter: MessagesPigeonCodecReaderWriter()) +class LegacyUserDefaultsApiInstanceTracker { + static var instancesOfLegacyUserDefaultsApi = [String: LegacyUserDefaultsApiSetup?]() } /// Generated protocol from Pigeon that represents a handler of messages from Flutter. @@ -201,130 +508,125 @@ protocol LegacyUserDefaultsApi { func clear(prefix: String, allowList: [String]?) throws -> Bool } -/// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. -class LegacyUserDefaultsApiSetup { - static var codec: FlutterStandardMessageCodec { MessagesPigeonCodec.shared } - /// Sets up an instance of `LegacyUserDefaultsApi` to handle messages through the `binaryMessenger`. - static func setUp( - binaryMessenger: FlutterBinaryMessenger, api: LegacyUserDefaultsApi?, - messageChannelSuffix: String = "" +/// Generated setup class from Pigeon to register implemented LegacyUserDefaultsApi classes. +@objc class LegacyUserDefaultsApiSetup: NSObject { + private var api: LegacyUserDefaultsApi? + override init() {} + static func register( + api: LegacyUserDefaultsApi?, name: String = MessagesPigeonInternal.defaultInstanceName ) { - let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" - let removeChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.remove\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) if let api = api { - removeChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let keyArg = args[0] as! String - do { - try api.remove(key: keyArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } + let wrapper = LegacyUserDefaultsApiSetup() + wrapper.api = api + LegacyUserDefaultsApiInstanceTracker.instancesOfLegacyUserDefaultsApi[name] = wrapper } else { - removeChannel.setMessageHandler(nil) + LegacyUserDefaultsApiInstanceTracker.instancesOfLegacyUserDefaultsApi.removeValue( + forKey: name) } - let setBoolChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.setBool\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setBoolChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let keyArg = args[0] as! String - let valueArg = args[1] as! Bool - do { - try api.setBool(key: keyArg, value: valueArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setBoolChannel.setMessageHandler(nil) + } + @objc static func getInstance(name: String) -> LegacyUserDefaultsApiSetup? { + return LegacyUserDefaultsApiInstanceTracker.instancesOfLegacyUserDefaultsApi[name] ?? nil + } + @objc func remove(key: NSString, wrappedError: PigeonError) { + do { + return try api!.remove(key: key as String) + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" } - let setDoubleChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.setDouble\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setDoubleChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let keyArg = args[0] as! String - let valueArg = args[1] as! Double - do { - try api.setDouble(key: keyArg, value: valueArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setDoubleChannel.setMessageHandler(nil) + return + } + @objc func setBool(key: NSString, value: Bool, wrappedError: PigeonError) { + do { + return try api!.setBool(key: key as String, value: value) + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" } - let setValueChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.setValue\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setValueChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let keyArg = args[0] as! String - let valueArg = args[1]! - do { - try api.setValue(key: keyArg, value: valueArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setValueChannel.setMessageHandler(nil) + return + } + @objc func setDouble(key: NSString, value: Double, wrappedError: PigeonError) { + do { + return try api!.setDouble(key: key as String, value: value) + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" } - let getAllChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.getAll\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getAllChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let prefixArg = args[0] as! String - let allowListArg: [String]? = nilOrValue(args[1]) - do { - let result = try api.getAll(prefix: prefixArg, allowList: allowListArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getAllChannel.setMessageHandler(nil) + return + } + @objc func setValue(key: NSString, value: NSObject, wrappedError: PigeonError) { + do { + return try api!.setValue(key: key as String, value: _PigeonFfiCodec.readValue(value: value)!) + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" } - let clearChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.clear\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - clearChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let prefixArg = args[0] as! String - let allowListArg: [String]? = nilOrValue(args[1]) - do { - let result = try api.clear(prefix: prefixArg, allowList: allowListArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - clearChannel.setMessageHandler(nil) + return + } + @objc func getAll(prefix: NSString, allowList: [NSObject]?, wrappedError: PigeonError) + -> [NSObject: NSObject]? + { + do { + return try _PigeonFfiCodec.writeValue( + value: api!.getAll( + prefix: prefix as String, + allowList: _PigeonFfiCodec.readValue(value: allowList as NSObject?, type: "String") + as? [String])) as? [NSObject: NSObject] + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" + } + return nil + } + @objc func clear(prefix: NSString, allowList: [NSObject]?, wrappedError: PigeonError) -> NSNumber? + { + do { + return try NSNumber( + value: api!.clear( + prefix: prefix as String, + allowList: _PigeonFfiCodec.readValue(value: allowList as NSObject?, type: "String") + as? [String])) + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" } + return nil } } +class UserDefaultsApiInstanceTracker { + static var instancesOfUserDefaultsApi = [String: UserDefaultsApiSetup?]() +} + /// Generated protocol from Pigeon that represents a handler of messages from Flutter. protocol UserDefaultsApi { /// Adds property to shared preferences data set of type String. @@ -339,114 +641,120 @@ protocol UserDefaultsApi { func getKeys(allowList: [String]?, options: SharedPreferencesPigeonOptions) throws -> [String] } -/// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. -class UserDefaultsApiSetup { - static var codec: FlutterStandardMessageCodec { MessagesPigeonCodec.shared } - /// Sets up an instance of `UserDefaultsApi` to handle messages through the `binaryMessenger`. - static func setUp( - binaryMessenger: FlutterBinaryMessenger, api: UserDefaultsApi?, - messageChannelSuffix: String = "" +/// Generated setup class from Pigeon to register implemented UserDefaultsApi classes. +@objc class UserDefaultsApiSetup: NSObject { + private var api: UserDefaultsApi? + override init() {} + static func register( + api: UserDefaultsApi?, name: String = MessagesPigeonInternal.defaultInstanceName ) { - let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" - /// Adds property to shared preferences data set of type String. - let setChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.set\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) if let api = api { - setChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let keyArg = args[0] as! String - let valueArg = args[1]! - let optionsArg = args[2] as! SharedPreferencesPigeonOptions - do { - try api.set(key: keyArg, value: valueArg, options: optionsArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } + let wrapper = UserDefaultsApiSetup() + wrapper.api = api + UserDefaultsApiInstanceTracker.instancesOfUserDefaultsApi[name] = wrapper } else { - setChannel.setMessageHandler(nil) + UserDefaultsApiInstanceTracker.instancesOfUserDefaultsApi.removeValue(forKey: name) } - /// Removes all properties from shared preferences data set with matching prefix. - let clearChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.clear\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - clearChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let allowListArg: [String]? = nilOrValue(args[0]) - let optionsArg = args[1] as! SharedPreferencesPigeonOptions - do { - try api.clear(allowList: allowListArg, options: optionsArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - clearChannel.setMessageHandler(nil) + } + @objc static func getInstance(name: String) -> UserDefaultsApiSetup? { + return UserDefaultsApiInstanceTracker.instancesOfUserDefaultsApi[name] ?? nil + } + /// Adds property to shared preferences data set of type String. + @objc func set( + key: NSString, value: NSObject, options: SharedPreferencesPigeonOptionsBridge, + wrappedError: PigeonError + ) { + do { + return try api!.set( + key: key as String, value: _PigeonFfiCodec.readValue(value: value)!, + options: options.toSwift()) + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" } - /// Gets all properties from shared preferences data set with matching prefix. - let getAllChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.getAll\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getAllChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let allowListArg: [String]? = nilOrValue(args[0]) - let optionsArg = args[1] as! SharedPreferencesPigeonOptions - do { - let result = try api.getAll(allowList: allowListArg, options: optionsArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getAllChannel.setMessageHandler(nil) + return + } + /// Removes all properties from shared preferences data set with matching prefix. + @objc func clear( + allowList: [NSObject]?, options: SharedPreferencesPigeonOptionsBridge, wrappedError: PigeonError + ) { + do { + return try api!.clear( + allowList: _PigeonFfiCodec.readValue(value: allowList as NSObject?, type: "String") + as? [String], options: options.toSwift()) + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" } - /// Gets individual value stored with [key], if any. - let getValueChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.getValue\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getValueChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let keyArg = args[0] as! String - let optionsArg = args[1] as! SharedPreferencesPigeonOptions - do { - let result = try api.getValue(key: keyArg, options: optionsArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getValueChannel.setMessageHandler(nil) + return + } + /// Gets all properties from shared preferences data set with matching prefix. + @objc func getAll( + allowList: [NSObject]?, options: SharedPreferencesPigeonOptionsBridge, wrappedError: PigeonError + ) -> [NSObject: NSObject]? { + do { + return try _PigeonFfiCodec.writeValue( + value: api!.getAll( + allowList: _PigeonFfiCodec.readValue(value: allowList as NSObject?, type: "String") + as? [String], options: options.toSwift())) as? [NSObject: NSObject] + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" } - /// Gets all properties from shared preferences data set with matching prefix. - let getKeysChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.getKeys\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getKeysChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let allowListArg: [String]? = nilOrValue(args[0]) - let optionsArg = args[1] as! SharedPreferencesPigeonOptions - do { - let result = try api.getKeys(allowList: allowListArg, options: optionsArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getKeysChannel.setMessageHandler(nil) + return nil + } + /// Gets individual value stored with [key], if any. + @objc func getValue( + key: NSString, options: SharedPreferencesPigeonOptionsBridge, wrappedError: PigeonError + ) -> NSObject? { + do { + return try _PigeonFfiCodec.writeValue( + value: api!.getValue(key: key as String, options: options.toSwift()), isObject: true) + as? NSObject + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" + } + return nil + } + /// Gets all properties from shared preferences data set with matching prefix. + @objc func getKeys( + allowList: [NSObject]?, options: SharedPreferencesPigeonOptionsBridge, wrappedError: PigeonError + ) -> [NSObject]? { + do { + return try _PigeonFfiCodec.writeValue( + value: api!.getKeys( + allowList: _PigeonFfiCodec.readValue(value: allowList as NSObject?, type: "String") + as? [String], options: options.toSwift())) as? [NSObject] + } catch let error as PigeonError { + wrappedError.code = error.code + wrappedError.message = error.message + wrappedError.details = error.details + } catch let error { + wrappedError.code = "\(error)" + wrappedError.message = "\(type(of: error))" + wrappedError.details = "Stacktrace: \(Thread.callStackSymbols)" } + return nil } } diff --git a/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation_objc_gen/Runner.h b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation_objc_gen/Runner.h new file mode 100644 index 000000000000..6fddfac6047e --- /dev/null +++ b/packages/shared_preferences/shared_preferences_foundation/darwin/shared_preferences_foundation/Sources/shared_preferences_foundation_objc_gen/Runner.h @@ -0,0 +1,464 @@ +// Generated by Apple Swift version 6.1.2 effective-5.10 (swiftlang-6.1.2.1.2 +// clang-1700.0.13.5) +#ifndef RUNNER_SWIFT_H +#define RUNNER_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +#define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +#define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +#define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +#define __has_warning(x) 0 +#endif + +#if __has_include() +#include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include + +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module" +#if defined(__arm64e__) && __has_include() +#include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +#ifndef __ptrauth_swift_value_witness_function_pointer +#define __ptrauth_swift_value_witness_function_pointer(x) +#endif +#ifndef __ptrauth_swift_class_method_pointer +#define __ptrauth_swift_class_method_pointer(x) +#endif +#pragma clang diagnostic pop +#endif +#pragma clang diagnostic pop +#endif + +#if !defined(SWIFT_TYPEDEFS) +#define SWIFT_TYPEDEFS 1 +#if __has_include() +#include +#elif !defined(__cplusplus) +typedef unsigned char char8_t; +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +#endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +#define SWIFT_PASTE_HELPER(x, y) x##y +#define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +#define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +#if __has_feature(objc_class_property) +#define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +#else +#define SWIFT_CLASS_PROPERTY(...) +#endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +#if __has_attribute(objc_runtime_name) +#define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +#else +#define SWIFT_RUNTIME_NAME(X) +#endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +#if __has_attribute(swift_name) +#define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +#else +#define SWIFT_COMPILE_NAME(X) +#endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +#if __has_attribute(objc_method_family) +#define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +#else +#define SWIFT_METHOD_FAMILY(X) +#endif +#endif +#if !defined(SWIFT_NOESCAPE) +#if __has_attribute(noescape) +#define SWIFT_NOESCAPE __attribute__((noescape)) +#else +#define SWIFT_NOESCAPE +#endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +#if __has_attribute(ns_consumed) +#define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +#else +#define SWIFT_RELEASES_ARGUMENT +#endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +#if __has_attribute(warn_unused_result) +#define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +#define SWIFT_WARN_UNUSED_RESULT +#endif +#endif +#if !defined(SWIFT_NORETURN) +#if __has_attribute(noreturn) +#define SWIFT_NORETURN __attribute__((noreturn)) +#else +#define SWIFT_NORETURN +#endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +#define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +#define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +#define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +#if __has_attribute(objc_subclassing_restricted) +#define SWIFT_CLASS(SWIFT_NAME) \ + SWIFT_RUNTIME_NAME(SWIFT_NAME) \ + __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +#define SWIFT_CLASS_NAMED(SWIFT_NAME) \ + __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) \ + SWIFT_CLASS_EXTRA +#else +#define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +#define SWIFT_CLASS_NAMED(SWIFT_NAME) \ + SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +#endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +#if __has_attribute(objc_class_stub) +#define SWIFT_RESILIENT_CLASS(SWIFT_NAME) \ + SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +#define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) \ + __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +#else +#define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +#define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +#endif +#endif +#if !defined(SWIFT_PROTOCOL) +#define SWIFT_PROTOCOL(SWIFT_NAME) \ + SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) \ + SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +#define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +#if __has_attribute(objc_designated_initializer) +#define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define OBJC_DESIGNATED_INITIALIZER +#endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +#if __has_attribute(enum_extensibility) +#define SWIFT_ENUM_ATTR(_extensibility) \ + __attribute__((enum_extensibility(_extensibility))) +#else +#define SWIFT_ENUM_ATTR(_extensibility) +#endif +#endif +#if !defined(SWIFT_ENUM) +#define SWIFT_ENUM(_type, _name, _extensibility) \ + enum _name : _type _name; \ + enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +#if __has_feature(generalized_swift_name) +#define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) \ + enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); \ + enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) \ + SWIFT_ENUM_EXTRA _name : _type +#else +#define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) \ + SWIFT_ENUM(_type, _name, _extensibility) +#endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +#define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +#define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +#define SWIFT_AVAILABILITY(plat, ...) \ + __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +#define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +#define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +#define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +#if __has_feature(attribute_diagnose_if_objc) +#define SWIFT_DEPRECATED_OBJC(Msg) \ + __attribute__((diagnose_if(1, Msg, "warning"))) +#else +#define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +#endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +#define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +#if defined(__cplusplus) +#define SWIFT_EXTERN extern "C" +#else +#define SWIFT_EXTERN extern +#endif +#endif +#if !defined(SWIFT_CALL) +#define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +#define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +#define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +#define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +#define SWIFT_NOEXCEPT noexcept +#else +#define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +#if __has_attribute(always_inline) +#if __has_attribute(nodebug) +#define SWIFT_C_INLINE_THUNK \ + inline __attribute__((always_inline)) __attribute__((nodebug)) +#else +#define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +#endif +#else +#define SWIFT_C_INLINE_THUNK inline +#endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +#define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +#define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import Foundation; +@import ObjectiveC; +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +#pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" +#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" + +#if __has_attribute(external_source_symbol) +#pragma push_macro("any") +#undef any +#pragma clang attribute push( \ + __attribute__((external_source_symbol( \ + language = "Swift", defined_in = "Runner", generated_declaration))), \ + apply_to = \ + any(function, enum, objc_interface, objc_category, objc_protocol)) +#pragma pop_macro("any") +#endif + +#if defined(__OBJC__) + +@class NSString; +@class PigeonError; +@class NSNumber; +/// Generated setup class from Pigeon to register implemented +/// LegacyUserDefaultsApi classes. +SWIFT_CLASS("_TtC6Runner26LegacyUserDefaultsApiSetup") +@interface LegacyUserDefaultsApiSetup : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (LegacyUserDefaultsApiSetup* _Nullable)getInstanceWithName: + (NSString* _Nonnull)name SWIFT_WARN_UNUSED_RESULT; +- (void)removeWithKey:(NSString* _Nonnull)key + wrappedError:(PigeonError* _Nonnull)wrappedError; +- (void)setBoolWithKey:(NSString* _Nonnull)key + value:(BOOL)value + wrappedError:(PigeonError* _Nonnull)wrappedError; +- (void)setDoubleWithKey:(NSString* _Nonnull)key + value:(double)value + wrappedError:(PigeonError* _Nonnull)wrappedError; +- (void)setValueWithKey:(NSString* _Nonnull)key + value:(NSObject* _Nonnull)value + wrappedError:(PigeonError* _Nonnull)wrappedError; +- (NSDictionary, NSObject*>* _Nullable) + getAllWithPrefix:(NSString* _Nonnull)prefix + allowList:(NSArray* _Nullable)allowList + wrappedError:(PigeonError* _Nonnull)wrappedError + SWIFT_WARN_UNUSED_RESULT; +- (NSNumber* _Nullable)clearWithPrefix:(NSString* _Nonnull)prefix + allowList:(NSArray* _Nullable)allowList + wrappedError:(PigeonError* _Nonnull)wrappedError + SWIFT_WARN_UNUSED_RESULT; +@end + +SWIFT_CLASS("_TtC6Runner21MessagesNumberWrapper") +@interface MessagesNumberWrapper : NSObject +- (nonnull instancetype)initWithNumber:(NSNumber* _Nonnull)number + type:(NSInteger)type + OBJC_DESIGNATED_INITIALIZER; +- (id _Nonnull)copyWithZone:(struct _NSZone* _Nullable)zone + SWIFT_WARN_UNUSED_RESULT; +@property(nonatomic, strong) NSNumber* _Nonnull number; +@property(nonatomic) NSInteger type; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property(nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +SWIFT_CLASS("_TtC6Runner26MessagesPigeonInternalNull") +@interface MessagesPigeonInternalNull : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSData; +SWIFT_CLASS("_TtC6Runner23MessagesPigeonTypedData") +@interface MessagesPigeonTypedData : NSObject +@property(nonatomic, readonly, strong) NSData* _Nonnull data; +@property(nonatomic, readonly) NSInteger type; +- (nonnull instancetype)initWithData:(NSData* _Nonnull)data + type:(NSInteger)type + OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// Error class for passing custom error details to Dart side. +SWIFT_CLASS("_TtC6Runner11PigeonError") +@interface PigeonError : NSObject +@property(nonatomic, copy) NSString* _Nullable code; +@property(nonatomic, copy) NSString* _Nullable message; +@property(nonatomic, copy) NSString* _Nullable details; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithCode:(NSString* _Nullable)code + message:(NSString* _Nullable)message + details:(NSString* _Nullable)details + OBJC_DESIGNATED_INITIALIZER; +@end + +/// Generated bridge class from Pigeon that moves data from Swift to +/// Objective-C. +SWIFT_CLASS("_TtC6Runner36SharedPreferencesPigeonOptionsBridge") +@interface SharedPreferencesPigeonOptionsBridge : NSObject +- (nonnull instancetype)initWithSuiteName:(NSString* _Nullable)suiteName + OBJC_DESIGNATED_INITIALIZER; +@property(nonatomic, strong) NSString* _Nullable suiteName; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// Generated setup class from Pigeon to register implemented UserDefaultsApi +/// classes. +SWIFT_CLASS("_TtC6Runner20UserDefaultsApiSetup") +@interface UserDefaultsApiSetup : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (UserDefaultsApiSetup* _Nullable)getInstanceWithName:(NSString* _Nonnull)name + SWIFT_WARN_UNUSED_RESULT; +/// Adds property to shared preferences data set of type String. +- (void)setWithKey:(NSString* _Nonnull)key + value:(NSObject* _Nonnull)value + options:(SharedPreferencesPigeonOptionsBridge* _Nonnull)options + wrappedError:(PigeonError* _Nonnull)wrappedError; +/// Removes all properties from shared preferences data set with matching +/// prefix. +- (void)clearWithAllowList:(NSArray* _Nullable)allowList + options: + (SharedPreferencesPigeonOptionsBridge* _Nonnull)options + wrappedError:(PigeonError* _Nonnull)wrappedError; +/// Gets all properties from shared preferences data set with matching prefix. +- (NSDictionary, NSObject*>* _Nullable) + getAllWithAllowList:(NSArray* _Nullable)allowList + options:(SharedPreferencesPigeonOptionsBridge* _Nonnull)options + wrappedError:(PigeonError* _Nonnull)wrappedError + SWIFT_WARN_UNUSED_RESULT; +/// Gets individual value stored with [key], if any. +- (NSObject* _Nullable) + getValueWithKey:(NSString* _Nonnull)key + options:(SharedPreferencesPigeonOptionsBridge* _Nonnull)options + wrappedError:(PigeonError* _Nonnull)wrappedError + SWIFT_WARN_UNUSED_RESULT; +/// Gets all properties from shared preferences data set with matching prefix. +- (NSArray* _Nullable) + getKeysWithAllowList:(NSArray* _Nullable)allowList + options:(SharedPreferencesPigeonOptionsBridge* _Nonnull)options + wrappedError:(PigeonError* _Nonnull)wrappedError + SWIFT_WARN_UNUSED_RESULT; +@end + +#endif +#if __has_attribute(external_source_symbol) +#pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif diff --git a/packages/shared_preferences/shared_preferences_foundation/lib/src/messages.g.dart b/packages/shared_preferences/shared_preferences_foundation/lib/src/messages.g.dart index 738e6db5a152..1384794156da 100644 --- a/packages/shared_preferences/shared_preferences_foundation/lib/src/messages.g.dart +++ b/packages/shared_preferences/shared_preferences_foundation/lib/src/messages.g.dart @@ -1,39 +1,347 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.1.0), do not edit directly. +// Autogenerated from Pigeon (v27.4.0), do not edit directly. // See also: https://pub.dev/packages/pigeon -// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers +// ignore_for_file: unused_import, unused_shown_name +// ignore_for_file: type=lint import 'dart:async'; -import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; +import 'dart:ffi'; +import 'dart:io' show Platform; +import 'dart:typed_data' show Float32List, Float64List, Int32List, Int64List, TypedData; -import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; +import 'package:ffi/ffi.dart'; import 'package:flutter/services.dart'; +import 'package:meta/meta.dart' show immutable, protected, visibleForTesting; +import 'package:objective_c/objective_c.dart'; +import './messages.g.ffi.dart' as ffi_bridge; -PlatformException _createConnectionError(String channelName) { - return PlatformException( - code: 'channel-error', - message: 'Unable to establish connection on channel: "$channelName".', - ); +Object? _extractReplyValueOrThrow( + List? replyList, + String channelName, { + required bool isNullValid, +}) { + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel: "$channelName".', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else if (!isNullValid && (replyList.isNotEmpty && replyList[0] == null)) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } + return replyList.firstOrNull; } bool _deepEquals(Object? a, Object? b) { + if (identical(a, b)) { + return true; + } + if (a is double && b is double) { + if (a.isNaN && b.isNaN) { + return true; + } + return a == b; + } if (a is List && b is List) { return a.length == b.length && a.indexed.every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1])); } if (a is Map && b is Map) { - return a.length == b.length && - a.entries.every( - (MapEntry entry) => - (b as Map).containsKey(entry.key) && - _deepEquals(entry.value, b[entry.key]), - ); + if (a.length != b.length) { + return false; + } + for (final MapEntry entryA in a.entries) { + bool found = false; + for (final MapEntry entryB in b.entries) { + if (_deepEquals(entryA.key, entryB.key)) { + if (_deepEquals(entryA.value, entryB.value)) { + found = true; + break; + } else { + return false; + } + } + } + if (!found) { + return false; + } + } + return true; } return a == b; } +int _deepHash(Object? value) { + if (value is List) { + return Object.hashAll(value.map(_deepHash)); + } + if (value is Map) { + int result = 0; + for (final MapEntry entry in value.entries) { + result += (_deepHash(entry.key) * 31) ^ _deepHash(entry.value); + } + return result; + } + if (value is double && value.isNaN) { + // Normalize NaN to a consistent hash. + return 0x7FF8000000000000.hashCode; + } + if (value is double && value == 0.0) { + // Normalize -0.0 to 0.0 so they have the same hash code. + return 0.0.hashCode; + } + return value.hashCode; +} + +class _PigeonFfiCodec { + static Object? readValue(ObjCObject? value, [Type? type, Type? type2]) { + if (value == null || ffi_bridge.MessagesPigeonInternalNull.isA(value)) { + return null; + } else if (NSNumber.isA(value)) { + final NSNumber numValue = NSNumber.as(value); + if (type == double) { + return numValue.doubleValue; + } else if (type == bool) { + return numValue.boolValue; + } + + return numValue.longValue; + } else if (NSString.isA(value)) { + return NSString.as(value).toDartString(); + } else if (ffi_bridge.MessagesPigeonTypedData.isA(value)) { + return _getValueFromPigeonTypedData(value as ffi_bridge.MessagesPigeonTypedData); + } else if (NSArray.isA(value)) { + final NSArray array = NSArray.as(value); + final List res = []; + for (int i = 0; i < array.count; i++) { + res.add(readValue(array.objectAtIndex(i), type)); + } + return res; + } else if (NSDictionary.isA(value)) { + final NSDictionary dict = NSDictionary.as(value); + final NSArray keys = dict.allKeys; + final Map res = {}; + for (int i = 0; i < keys.count; i++) { + final ObjCObject key = keys.objectAtIndex(i); + res[readValue(key, type, type2)] = readValue(dict.objectForKey(key), type, type2); + } + return res; + } else if (ffi_bridge.MessagesNumberWrapper.isA(value)) { + return _convertNumberWrapperToDart(ffi_bridge.MessagesNumberWrapper.as(value)); + } else if (ffi_bridge.SharedPreferencesPigeonOptionsBridge.isA(value)) { + return SharedPreferencesPigeonOptions.fromFfi( + ffi_bridge.SharedPreferencesPigeonOptionsBridge.as(value), + ); + } else { + throw ArgumentError.value(value); + } + } + + static T writeValue(Object? value, {bool generic = false}) { + if (value == null) { + if (_isTypeOrNullableType(ObjCObject) || _isTypeOrNullableType(NSObject)) { + return ffi_bridge.MessagesPigeonInternalNull() as T; + } + return null as T; + } + if (value is bool) { + return (generic + ? _convertToFfiNumberWrapper(value) + : NSNumber.alloc().initWithLong(value ? 1 : 0)) + as T; + } else if (value is double) { + return (generic ? _convertToFfiNumberWrapper(value) : NSNumber.alloc().initWithDouble(value)) + as T; + // ignore: avoid_double_and_int_checks + } else if (value is int) { + return (generic ? _convertToFfiNumberWrapper(value) : NSNumber.alloc().initWithLong(value)) + as T; + } else if (value is Enum) { + return (generic + ? _convertToFfiNumberWrapper(value) + : NSNumber.alloc().initWithLong(value.index)) + as T; + } else if (value is String) { + return NSString(value) as T; + } else if (value is TypedData) { + return _toPigeonTypedData(value) as T; + } else if (value is List && _isTypeOrNullableType(T)) { + final NSMutableArray res = NSMutableArray(); + for (final String entry in value) { + res.addObject(writeValue(entry, generic: true)); + } + return res as T; + } else if (value is List) { + final NSMutableArray res = NSMutableArray(); + for (final Object? entry in value) { + res.addObject( + entry == null + ? ffi_bridge.MessagesPigeonInternalNull() + : writeValue(entry, generic: true), + ); + } + return res as T; + } else if (value is Map && _isTypeOrNullableType(T)) { + final NSMutableDictionary res = NSMutableDictionary(); + for (final MapEntry entry in value.entries) { + res.setObject( + writeValue(entry.value, generic: true), + forKey: NSCopying.as(writeValue(entry.key, generic: true)), + ); + } + return res as T; + } else if (value is Map) { + final NSMutableDictionary res = NSMutableDictionary(); + for (final MapEntry entry in value.entries) { + res.setObject( + writeValue(entry.value, generic: true), + forKey: NSCopying.as(writeValue(entry.key, generic: true)), + ); + } + return res as T; + } else if (value is SharedPreferencesPigeonOptions) { + return value.toFfi() as T; + } else { + throw ArgumentError.value(value); + } + } +} + +ffi_bridge.MessagesPigeonTypedData _toPigeonTypedData(TypedData value) { + final int lengthInBytes = value.lengthInBytes; + if (value is Uint8List) { + final int length = value.length; + final Pointer ptr = calloc(length); + ptr.asTypedList(length).setAll(0, value); + final NSData nsData = NSData.dataWithBytes(ptr.cast(), length: lengthInBytes); + calloc.free(ptr); + return ffi_bridge.MessagesPigeonTypedData.alloc().initWithData(nsData, type: 0); + } else if (value is Int32List) { + final int length = value.length; + final Pointer ptr = calloc(length); + ptr.asTypedList(length).setAll(0, value); + final NSData nsData = NSData.dataWithBytes(ptr.cast(), length: lengthInBytes); + calloc.free(ptr); + return ffi_bridge.MessagesPigeonTypedData.alloc().initWithData(nsData, type: 1); + } else if (value is Int64List) { + final int length = value.length; + final Pointer ptr = calloc(length); + ptr.asTypedList(length).setAll(0, value); + final NSData nsData = NSData.dataWithBytes(ptr.cast(), length: lengthInBytes); + calloc.free(ptr); + return ffi_bridge.MessagesPigeonTypedData.alloc().initWithData(nsData, type: 2); + } else if (value is Float32List) { + final int length = value.length; + final Pointer ptr = calloc(length); + ptr.asTypedList(length).setAll(0, value); + final NSData nsData = NSData.dataWithBytes(ptr.cast(), length: lengthInBytes); + calloc.free(ptr); + return ffi_bridge.MessagesPigeonTypedData.alloc().initWithData(nsData, type: 3); + } else if (value is Float64List) { + final int length = value.length; + final Pointer ptr = calloc(length); + ptr.asTypedList(length).setAll(0, value); + final NSData nsData = NSData.dataWithBytes(ptr.cast(), length: lengthInBytes); + calloc.free(ptr); + return ffi_bridge.MessagesPigeonTypedData.alloc().initWithData(nsData, type: 4); + } + throw ArgumentError.value(value); +} + +Object? _getValueFromPigeonTypedData(ffi_bridge.MessagesPigeonTypedData value) { + final NSData data = value.data; + final Pointer bytes = data.bytes; + return switch (value.type) { + 0 => Uint8List.fromList(bytes.cast().asTypedList(data.length)), + 1 => Int32List.fromList(bytes.cast().asTypedList(data.length ~/ 4)), + 2 => Int64List.fromList(bytes.cast().asTypedList(data.length ~/ 8)), + 3 => Float32List.fromList(bytes.cast().asTypedList(data.length ~/ 4)), + 4 => Float64List.fromList(bytes.cast().asTypedList(data.length ~/ 8)), + _ => throw ArgumentError.value(value), + }; +} + +Object? _convertNumberWrapperToDart(ffi_bridge.MessagesNumberWrapper value) { + switch (value.type) { + case 1: + return value.number.longValue; + case 2: + return value.number.doubleValue; + case 3: + return value.number.boolValue; + default: + throw ArgumentError.value(value); + } +} + +ffi_bridge.MessagesNumberWrapper _convertToFfiNumberWrapper(Object value) { + switch (value) { + case int _: + return ffi_bridge.MessagesNumberWrapper.alloc().initWithNumber( + NSNumber.alloc().initWithLong(value), + type: 1, + ); + case double _: + return ffi_bridge.MessagesNumberWrapper.alloc().initWithNumber( + NSNumber.alloc().initWithDouble(value), + type: 2, + ); + case bool _: + return ffi_bridge.MessagesNumberWrapper.alloc().initWithNumber( + NSNumber.alloc().initWithLong(value ? 1 : 0), + type: 3, + ); + default: + throw ArgumentError.value(value); + } +} + +bool _isType(Type t) => T == t; +bool _isTypeOrNullableType(Type t) => _isType(t) || _isType(t); + +void _throwNoInstanceError(String channelName) { + String nameString = 'named $channelName'; + if (channelName == defaultInstanceName) { + nameString = 'with no name'; + } + final String error = 'No instance $nameString has been registered.'; + throw ArgumentError(error); +} + +void _throwIfFfiError(ffi_bridge.PigeonError error) { + if (error.code != null) { + throw _wrapFfiError(error); + } +} + +PlatformException _wrapFfiError(ffi_bridge.PigeonError error) => PlatformException( + code: error.code!.toDartString(), + message: error.message?.toDartString(), + details: NSString.isA(error.details) ? error.details!.toDartString() : error.details, +); + +void _reportFfiError(ffi_bridge.PigeonError errorOut, Object e) { + if (e is PlatformException) { + errorOut.code = NSString(e.code); + errorOut.message = NSString(e.message ?? ''); + errorOut.details = NSString((e.details ?? '').toString()); + } else { + errorOut.code = NSString('error'); + errorOut.message = NSString(e.toString()); + errorOut.details = null; + } +} + class SharedPreferencesPigeonOptions { SharedPreferencesPigeonOptions({this.suiteName}); @@ -43,10 +351,24 @@ class SharedPreferencesPigeonOptions { return [suiteName]; } + ffi_bridge.SharedPreferencesPigeonOptionsBridge toFfi() { + return ffi_bridge.SharedPreferencesPigeonOptionsBridge.alloc().initWithSuiteName( + _PigeonFfiCodec.writeValue(suiteName), + ); + } + Object encode() { return _toList(); } + static SharedPreferencesPigeonOptions? fromFfi( + ffi_bridge.SharedPreferencesPigeonOptionsBridge? ffiClass, + ) { + return ffiClass == null + ? null + : SharedPreferencesPigeonOptions(suiteName: ffiClass.suiteName?.toDartString()); + } + static SharedPreferencesPigeonOptions decode(Object result) { result as List; return SharedPreferencesPigeonOptions(suiteName: result[0] as String?); @@ -61,12 +383,17 @@ class SharedPreferencesPigeonOptions { if (identical(this, other)) { return true; } - return _deepEquals(encode(), other.encode()); + return _deepEquals(suiteName, other.suiteName); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => _deepHash([runtimeType, ..._toList()]); + + @override + String toString() { + return 'SharedPreferencesPigeonOptions(suiteName: $suiteName)'; + } } class _PigeonCodec extends StandardMessageCodec { @@ -95,117 +422,258 @@ class _PigeonCodec extends StandardMessageCodec { } } +const String defaultInstanceName = 'PigeonDefaultClassName32uh4ui3lh445uh4h3l2l455g4y34u'; + +class LegacyUserDefaultsApiForNativeInterop { + LegacyUserDefaultsApiForNativeInterop._withRegistrar({ + ffi_bridge.LegacyUserDefaultsApiSetup? ffiApi, + }) : _ffiApi = ffiApi; + + /// Returns instance of LegacyUserDefaultsApiForNativeInterop with specified [channelName] if one has been registered. + static LegacyUserDefaultsApiForNativeInterop? getInstance({ + String channelName = defaultInstanceName, + }) { + final LegacyUserDefaultsApiForNativeInterop res; + if (Platform.isIOS || Platform.isMacOS) { + final ffi_bridge.LegacyUserDefaultsApiSetup? link = + ffi_bridge.LegacyUserDefaultsApiSetup.getInstanceWithName(NSString(channelName)); + if (link == null) { + _throwNoInstanceError(channelName); + } + res = LegacyUserDefaultsApiForNativeInterop._withRegistrar(ffiApi: link); + } else { + throw UnsupportedError( + 'Native Interop is not supported on this platform. Use LegacyUserDefaultsApi instead.', + ); + } + return res; + } + + late final ffi_bridge.LegacyUserDefaultsApiSetup? _ffiApi; + + void remove(String key) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + _ffiApi.removeWithKey(_PigeonFfiCodec.writeValue(key), wrappedError: error); + _throwIfFfiError(error); + return; + } else { + throw Exception('No JNI or FFI api available'); + } + } + + void setBool(String key, bool value) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + _ffiApi.setBoolWithKey( + _PigeonFfiCodec.writeValue(key), + value: value, + wrappedError: error, + ); + _throwIfFfiError(error); + return; + } else { + throw Exception('No JNI or FFI api available'); + } + } + + void setDouble(String key, double value) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + _ffiApi.setDoubleWithKey( + _PigeonFfiCodec.writeValue(key), + value: value, + wrappedError: error, + ); + _throwIfFfiError(error); + return; + } else { + throw Exception('No JNI or FFI api available'); + } + } + + void setValue(String key, Object value) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + _ffiApi.setValueWithKey( + _PigeonFfiCodec.writeValue(key), + value: _PigeonFfiCodec.writeValue(value, generic: true), + wrappedError: error, + ); + _throwIfFfiError(error); + return; + } else { + throw Exception('No JNI or FFI api available'); + } + } + + Map getAll(String prefix, List? allowList) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + final NSDictionary? res = _ffiApi.getAllWithPrefix( + _PigeonFfiCodec.writeValue(prefix), + allowList: _PigeonFfiCodec.writeValue(allowList), + wrappedError: error, + ); + _throwIfFfiError(error); + final Map dartTypeRes = + (_PigeonFfiCodec.readValue(res)! as Map).cast(); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } + + bool clear(String prefix, List? allowList) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + final NSNumber? res = _ffiApi.clearWithPrefix( + _PigeonFfiCodec.writeValue(prefix), + allowList: _PigeonFfiCodec.writeValue(allowList), + wrappedError: error, + ); + _throwIfFfiError(error); + final bool dartTypeRes = res!.boolValue; + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } +} + class LegacyUserDefaultsApi { - /// Constructor for [LegacyUserDefaultsApi]. The [binaryMessenger] named argument is - /// available for dependency injection. If it is left null, the default + /// Constructor for [LegacyUserDefaultsApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - LegacyUserDefaultsApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) - : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; - final BinaryMessenger? pigeonVar_binaryMessenger; + LegacyUserDefaultsApi({ + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + LegacyUserDefaultsApiForNativeInterop? nativeInteropApi, + }) : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty + ? '.$messageChannelSuffix' + : '', + _nativeInteropApi = nativeInteropApi; + /// Creates an instance of [LegacyUserDefaultsApi] that requests an instance of + /// [LegacyUserDefaultsApiForNativeInterop] from the host platform with a matching instance name + /// to [messageChannelSuffix] or the default instance. + /// + /// Throws [ArgumentError] if no matching instance can be found. + factory LegacyUserDefaultsApi.createWithNativeInteropApi({ + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + }) { + LegacyUserDefaultsApiForNativeInterop? nativeInteropApi; + String nativeInteropApiInstanceName = ''; + if (Platform.isIOS || Platform.isMacOS) { + if (messageChannelSuffix.isEmpty) { + nativeInteropApi = LegacyUserDefaultsApiForNativeInterop.getInstance(); + } else { + nativeInteropApiInstanceName = messageChannelSuffix; + nativeInteropApi = LegacyUserDefaultsApiForNativeInterop.getInstance( + channelName: messageChannelSuffix, + ); + } + } else { + throw UnsupportedError( + 'Native Interop is not supported on this platform. Use the default constructor of LegacyUserDefaultsApi instead.', + ); + } + if (nativeInteropApi == null) { + throw ArgumentError( + 'No LegacyUserDefaultsApi instance with ${nativeInteropApiInstanceName.isEmpty ? 'no ' : ''} instance name ${nativeInteropApiInstanceName.isNotEmpty ? '"$nativeInteropApiInstanceName" ' : ''}found.', + ); + } + return LegacyUserDefaultsApi( + binaryMessenger: binaryMessenger, + messageChannelSuffix: messageChannelSuffix, + nativeInteropApi: nativeInteropApi, + ); + } + + final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; + final LegacyUserDefaultsApiForNativeInterop? _nativeInteropApi; + Future remove(String key) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.remove(key); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.remove$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send([key]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else { - return; - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + _extractReplyValueOrThrow(pigeonVar_replyList, pigeonVar_channelName, isNullValid: true); } Future setBool(String key, bool value) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.setBool(key, value); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.setBool$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send([key, value]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else { - return; - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + _extractReplyValueOrThrow(pigeonVar_replyList, pigeonVar_channelName, isNullValid: true); } Future setDouble(String key, double value) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.setDouble(key, value); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.setDouble$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send([key, value]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else { - return; - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + _extractReplyValueOrThrow(pigeonVar_replyList, pigeonVar_channelName, isNullValid: true); } Future setValue(String key, Object value) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.setValue(key, value); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.setValue$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send([key, value]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else { - return; - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + _extractReplyValueOrThrow(pigeonVar_replyList, pigeonVar_channelName, isNullValid: true); } Future> getAll(String prefix, List? allowList) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.getAll(prefix, allowList); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.getAll$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -214,29 +682,23 @@ class LegacyUserDefaultsApi { prefix, allowList, ]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else if (pigeonVar_replyList[0] == null) { - throw PlatformException( - code: 'null-error', - message: 'Host platform returned null value for non-null return value.', - ); - } else { - return (pigeonVar_replyList[0] as Map?)!.cast(); - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ); + return (pigeonVar_replyValue! as Map).cast(); } Future clear(String prefix, List? allowList) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.clear(prefix, allowList); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.LegacyUserDefaultsApi.clear$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -245,46 +707,189 @@ class LegacyUserDefaultsApi { prefix, allowList, ]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ); + return pigeonVar_replyValue! as bool; + } +} + +class UserDefaultsApiForNativeInterop { + UserDefaultsApiForNativeInterop._withRegistrar({ffi_bridge.UserDefaultsApiSetup? ffiApi}) + : _ffiApi = ffiApi; + + /// Returns instance of UserDefaultsApiForNativeInterop with specified [channelName] if one has been registered. + static UserDefaultsApiForNativeInterop? getInstance({String channelName = defaultInstanceName}) { + final UserDefaultsApiForNativeInterop res; + if (Platform.isIOS || Platform.isMacOS) { + final ffi_bridge.UserDefaultsApiSetup? link = + ffi_bridge.UserDefaultsApiSetup.getInstanceWithName(NSString(channelName)); + if (link == null) { + _throwNoInstanceError(channelName); + } + res = UserDefaultsApiForNativeInterop._withRegistrar(ffiApi: link); + } else { + throw UnsupportedError( + 'Native Interop is not supported on this platform. Use UserDefaultsApi instead.', + ); + } + return res; + } + + late final ffi_bridge.UserDefaultsApiSetup? _ffiApi; + + void set(String key, Object value, SharedPreferencesPigeonOptions options) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + _ffiApi.setWithKey( + _PigeonFfiCodec.writeValue(key), + value: _PigeonFfiCodec.writeValue(value, generic: true), + options: options.toFfi(), + wrappedError: error, + ); + _throwIfFfiError(error); + return; + } else { + throw Exception('No JNI or FFI api available'); + } + } + + void clear(List? allowList, SharedPreferencesPigeonOptions options) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + _ffiApi.clearWithAllowList( + _PigeonFfiCodec.writeValue(allowList), + options: options.toFfi(), + wrappedError: error, + ); + _throwIfFfiError(error); + return; + } else { + throw Exception('No JNI or FFI api available'); + } + } + + Map getAll(List? allowList, SharedPreferencesPigeonOptions options) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + final NSDictionary? res = _ffiApi.getAllWithAllowList( + _PigeonFfiCodec.writeValue(allowList), + options: options.toFfi(), + wrappedError: error, ); - } else if (pigeonVar_replyList[0] == null) { - throw PlatformException( - code: 'null-error', - message: 'Host platform returned null value for non-null return value.', + _throwIfFfiError(error); + final Map dartTypeRes = + (_PigeonFfiCodec.readValue(res)! as Map).cast(); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); + } + } + + Object? getValue(String key, SharedPreferencesPigeonOptions options) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + final NSObject? res = _ffiApi.getValueWithKey( + _PigeonFfiCodec.writeValue(key), + options: options.toFfi(), + wrappedError: error, ); + _throwIfFfiError(error); + final Object? dartTypeRes = _PigeonFfiCodec.readValue(res); + return dartTypeRes; } else { - return (pigeonVar_replyList[0] as bool?)!; + throw Exception('No JNI or FFI api available'); + } + } + + List getKeys(List? allowList, SharedPreferencesPigeonOptions options) { + if (_ffiApi != null) { + final error = ffi_bridge.PigeonError(); + final NSArray? res = _ffiApi.getKeysWithAllowList( + _PigeonFfiCodec.writeValue(allowList), + options: options.toFfi(), + wrappedError: error, + ); + _throwIfFfiError(error); + final List dartTypeRes = (_PigeonFfiCodec.readValue(res)! as List) + .cast(); + return dartTypeRes; + } else { + throw Exception('No JNI or FFI api available'); } } } class UserDefaultsApi { - /// Constructor for [UserDefaultsApi]. The [binaryMessenger] named argument is - /// available for dependency injection. If it is left null, the default + /// Constructor for [UserDefaultsApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - UserDefaultsApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) - : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; - final BinaryMessenger? pigeonVar_binaryMessenger; + UserDefaultsApi({ + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + UserDefaultsApiForNativeInterop? nativeInteropApi, + }) : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty + ? '.$messageChannelSuffix' + : '', + _nativeInteropApi = nativeInteropApi; + + /// Creates an instance of [UserDefaultsApi] that requests an instance of + /// [UserDefaultsApiForNativeInterop] from the host platform with a matching instance name + /// to [messageChannelSuffix] or the default instance. + /// + /// Throws [ArgumentError] if no matching instance can be found. + factory UserDefaultsApi.createWithNativeInteropApi({ + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + }) { + UserDefaultsApiForNativeInterop? nativeInteropApi; + String nativeInteropApiInstanceName = ''; + if (Platform.isIOS || Platform.isMacOS) { + if (messageChannelSuffix.isEmpty) { + nativeInteropApi = UserDefaultsApiForNativeInterop.getInstance(); + } else { + nativeInteropApiInstanceName = messageChannelSuffix; + nativeInteropApi = UserDefaultsApiForNativeInterop.getInstance( + channelName: messageChannelSuffix, + ); + } + } else { + throw UnsupportedError( + 'Native Interop is not supported on this platform. Use the default constructor of UserDefaultsApi instead.', + ); + } + if (nativeInteropApi == null) { + throw ArgumentError( + 'No UserDefaultsApi instance with ${nativeInteropApiInstanceName.isEmpty ? 'no ' : ''} instance name ${nativeInteropApiInstanceName.isNotEmpty ? '"$nativeInteropApiInstanceName" ' : ''}found.', + ); + } + return UserDefaultsApi( + binaryMessenger: binaryMessenger, + messageChannelSuffix: messageChannelSuffix, + nativeInteropApi: nativeInteropApi, + ); + } + final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; + final UserDefaultsApiForNativeInterop? _nativeInteropApi; + /// Adds property to shared preferences data set of type String. Future set(String key, Object value, SharedPreferencesPigeonOptions options) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.set(key, value, options); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.set$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -294,25 +899,19 @@ class UserDefaultsApi { value, options, ]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else { - return; - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + _extractReplyValueOrThrow(pigeonVar_replyList, pigeonVar_channelName, isNullValid: true); } /// Removes all properties from shared preferences data set with matching prefix. Future clear(List? allowList, SharedPreferencesPigeonOptions options) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.clear(allowList, options); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.clear$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -321,18 +920,9 @@ class UserDefaultsApi { allowList, options, ]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else { - return; - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + _extractReplyValueOrThrow(pigeonVar_replyList, pigeonVar_channelName, isNullValid: true); } /// Gets all properties from shared preferences data set with matching prefix. @@ -340,9 +930,12 @@ class UserDefaultsApi { List? allowList, SharedPreferencesPigeonOptions options, ) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.getAll(allowList, options); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.getAll$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -351,47 +944,37 @@ class UserDefaultsApi { allowList, options, ]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else if (pigeonVar_replyList[0] == null) { - throw PlatformException( - code: 'null-error', - message: 'Host platform returned null value for non-null return value.', - ); - } else { - return (pigeonVar_replyList[0] as Map?)!.cast(); - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ); + return (pigeonVar_replyValue! as Map).cast(); } /// Gets individual value stored with [key], if any. Future getValue(String key, SharedPreferencesPigeonOptions options) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.getValue(key, options); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.getValue$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send([key, options]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else { - return pigeonVar_replyList[0]; - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: true, + ); + return pigeonVar_replyValue; } /// Gets all properties from shared preferences data set with matching prefix. @@ -399,9 +982,12 @@ class UserDefaultsApi { List? allowList, SharedPreferencesPigeonOptions options, ) async { - final String pigeonVar_channelName = + if (_nativeInteropApi != null) { + return _nativeInteropApi.getKeys(allowList, options); + } + final pigeonVar_channelName = 'dev.flutter.pigeon.shared_preferences_foundation.UserDefaultsApi.getKeys$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -410,22 +996,13 @@ class UserDefaultsApi { allowList, options, ]); - final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; - if (pigeonVar_replyList == null) { - throw _createConnectionError(pigeonVar_channelName); - } else if (pigeonVar_replyList.length > 1) { - throw PlatformException( - code: pigeonVar_replyList[0]! as String, - message: pigeonVar_replyList[1] as String?, - details: pigeonVar_replyList[2], - ); - } else if (pigeonVar_replyList[0] == null) { - throw PlatformException( - code: 'null-error', - message: 'Host platform returned null value for non-null return value.', - ); - } else { - return (pigeonVar_replyList[0] as List?)!.cast(); - } + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: false, + ); + return (pigeonVar_replyValue! as List).cast(); } } diff --git a/packages/shared_preferences/shared_preferences_foundation/lib/src/messages.g.ffi.dart b/packages/shared_preferences/shared_preferences_foundation/lib/src/messages.g.ffi.dart new file mode 100644 index 000000000000..362f9b66ac76 --- /dev/null +++ b/packages/shared_preferences/shared_preferences_foundation/lib/src/messages.g.ffi.dart @@ -0,0 +1,1167 @@ +// Copyright 2013 The Flutter Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// ignore_for_file: always_specify_types, camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field +// coverage:ignore-file + +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint, unused_import, unused_element, deprecated_member_use_from_same_package +import 'dart:ffi' as ffi; +import 'package:objective_c/objective_c.dart' as objc; +import 'package:ffi/ffi.dart' as pkg_ffi; + +const _$objcVersionCheck = objc.ObjCVersionCheck(9, 5); + +/// Generated setup class from Pigeon to register implemented LegacyUserDefaultsApi classes. +extension type LegacyUserDefaultsApiSetup._(objc.ObjCObject object$) + implements objc.ObjCObject, objc.NSObject { + /// Constructs a [LegacyUserDefaultsApiSetup] that points to the same underlying object as [other]. + LegacyUserDefaultsApiSetup.as(objc.ObjCObject other) : object$ = other { + assert(isA(object$)); + } + + /// Constructs a [LegacyUserDefaultsApiSetup] that wraps the given raw object pointer. + LegacyUserDefaultsApiSetup.fromPointer( + ffi.Pointer other, { + bool retain = false, + bool release = false, + }) : object$ = objc.ObjCObject(other, retain: retain, release: release) { + assert(isA(object$)); + } + + /// Returns whether [obj] is an instance of [LegacyUserDefaultsApiSetup]. + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_LegacyUserDefaultsApiSetup, + ); + + /// alloc + static LegacyUserDefaultsApiSetup alloc() { + final $ret = _objc_msgSend_151sglz(_class_LegacyUserDefaultsApiSetup, _sel_alloc); + return LegacyUserDefaultsApiSetup.fromPointer($ret, retain: false, release: true); + } + + /// allocWithZone: + static LegacyUserDefaultsApiSetup allocWithZone(ffi.Pointer zone) { + final $ret = _objc_msgSend_1cwp428( + _class_LegacyUserDefaultsApiSetup, + _sel_allocWithZone_, + zone, + ); + return LegacyUserDefaultsApiSetup.fromPointer($ret, retain: false, release: true); + } + + /// getInstanceWithName: + static LegacyUserDefaultsApiSetup? getInstanceWithName(objc.NSString name) { + final _$$ref = name.ref; + final $ret = _objc_msgSend_1sotr3r( + _class_LegacyUserDefaultsApiSetup, + _sel_getInstanceWithName_, + _$$ref.pointer, + ); + return $ret.address == 0 + ? null + : LegacyUserDefaultsApiSetup.fromPointer($ret, retain: true, release: true); + } + + /// new + static LegacyUserDefaultsApiSetup new$() { + final $ret = _objc_msgSend_151sglz(_class_LegacyUserDefaultsApiSetup, _sel_new); + return LegacyUserDefaultsApiSetup.fromPointer($ret, retain: false, release: true); + } + + /// Returns a new instance of LegacyUserDefaultsApiSetup constructed with the default `new` method. + LegacyUserDefaultsApiSetup() : this.as(new$().object$); +} + +extension LegacyUserDefaultsApiSetup$Methods on LegacyUserDefaultsApiSetup { + /// clearWithPrefix:allowList:wrappedError: + objc.NSNumber? clearWithPrefix( + objc.NSString prefix, { + objc.NSArray? allowList, + required PigeonError wrappedError, + }) { + final _$$ref = object$.ref; + final _$$ref$1 = prefix.ref; + final _$$ref$2 = allowList?.ref; + final _$$ref$3 = wrappedError.ref; + final $ret = _objc_msgSend_11spmsz( + _$$ref.pointer, + _sel_clearWithPrefix_allowList_wrappedError_, + _$$ref$1.pointer, + _$$ref$2?.pointer ?? ffi.nullptr, + _$$ref$3.pointer, + ); + return $ret.address == 0 ? null : objc.NSNumber.fromPointer($ret, retain: true, release: true); + } + + /// getAllWithPrefix:allowList:wrappedError: + objc.NSDictionary? getAllWithPrefix( + objc.NSString prefix, { + objc.NSArray? allowList, + required PigeonError wrappedError, + }) { + final _$$ref = object$.ref; + final _$$ref$1 = prefix.ref; + final _$$ref$2 = allowList?.ref; + final _$$ref$3 = wrappedError.ref; + final $ret = _objc_msgSend_11spmsz( + _$$ref.pointer, + _sel_getAllWithPrefix_allowList_wrappedError_, + _$$ref$1.pointer, + _$$ref$2?.pointer ?? ffi.nullptr, + _$$ref$3.pointer, + ); + return $ret.address == 0 + ? null + : objc.NSDictionary.fromPointer($ret, retain: true, release: true); + } + + /// init + LegacyUserDefaultsApiSetup init() { + final _$$ref = object$.ref; + objc.checkOsVersionInternal( + 'LegacyUserDefaultsApiSetup.init', + iOS: (false, (2, 0, 0)), + macOS: (false, (10, 0, 0)), + ); + final $ret = _objc_msgSend_151sglz(_$$ref.retainAndReturnPointer(), _sel_init); + return LegacyUserDefaultsApiSetup.fromPointer($ret, retain: false, release: true); + } + + /// removeWithKey:wrappedError: + void removeWithKey(objc.NSString key, {required PigeonError wrappedError}) { + final _$$ref = object$.ref; + final _$$ref$1 = key.ref; + final _$$ref$2 = wrappedError.ref; + _objc_msgSend_pfv6jd( + _$$ref.pointer, + _sel_removeWithKey_wrappedError_, + _$$ref$1.pointer, + _$$ref$2.pointer, + ); + } + + /// setBoolWithKey:value:wrappedError: + void setBoolWithKey(objc.NSString key, {required bool value, required PigeonError wrappedError}) { + final _$$ref = object$.ref; + final _$$ref$1 = key.ref; + final _$$ref$2 = wrappedError.ref; + _objc_msgSend_rnu2c5( + _$$ref.pointer, + _sel_setBoolWithKey_value_wrappedError_, + _$$ref$1.pointer, + value, + _$$ref$2.pointer, + ); + } + + /// setDoubleWithKey:value:wrappedError: + void setDoubleWithKey( + objc.NSString key, { + required double value, + required PigeonError wrappedError, + }) { + final _$$ref = object$.ref; + final _$$ref$1 = key.ref; + final _$$ref$2 = wrappedError.ref; + _objc_msgSend_r1s65y( + _$$ref.pointer, + _sel_setDoubleWithKey_value_wrappedError_, + _$$ref$1.pointer, + value, + _$$ref$2.pointer, + ); + } + + /// setValueWithKey:value:wrappedError: + void setValueWithKey( + objc.NSString key, { + required objc.NSObject value, + required PigeonError wrappedError, + }) { + final _$$ref = object$.ref; + final _$$ref$1 = key.ref; + final _$$ref$2 = value.ref; + final _$$ref$3 = wrappedError.ref; + _objc_msgSend_r8gdi7( + _$$ref.pointer, + _sel_setValueWithKey_value_wrappedError_, + _$$ref$1.pointer, + _$$ref$2.pointer, + _$$ref$3.pointer, + ); + } +} + +/// MessagesNumberWrapper +extension type MessagesNumberWrapper._(objc.ObjCObject object$) + implements objc.ObjCObject, objc.NSObject, objc.NSCopying { + /// Constructs a [MessagesNumberWrapper] that points to the same underlying object as [other]. + MessagesNumberWrapper.as(objc.ObjCObject other) : object$ = other { + assert(isA(object$)); + } + + /// Constructs a [MessagesNumberWrapper] that wraps the given raw object pointer. + MessagesNumberWrapper.fromPointer( + ffi.Pointer other, { + bool retain = false, + bool release = false, + }) : object$ = objc.ObjCObject(other, retain: retain, release: release) { + assert(isA(object$)); + } + + /// Returns whether [obj] is an instance of [MessagesNumberWrapper]. + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5(obj.ref.pointer, _sel_isKindOfClass_, _class_MessagesNumberWrapper); + + /// alloc + static MessagesNumberWrapper alloc() { + final $ret = _objc_msgSend_151sglz(_class_MessagesNumberWrapper, _sel_alloc); + return MessagesNumberWrapper.fromPointer($ret, retain: false, release: true); + } + + /// allocWithZone: + static MessagesNumberWrapper allocWithZone(ffi.Pointer zone) { + final $ret = _objc_msgSend_1cwp428(_class_MessagesNumberWrapper, _sel_allocWithZone_, zone); + return MessagesNumberWrapper.fromPointer($ret, retain: false, release: true); + } +} + +extension MessagesNumberWrapper$Methods on MessagesNumberWrapper { + /// copyWithZone: + objc.ObjCObject copyWithZone$1(ffi.Pointer zone) { + final _$$ref = object$.ref; + final $ret = _objc_msgSend_1cwp428(_$$ref.pointer, _sel_copyWithZone_, zone); + return objc.ObjCObject($ret, retain: false, release: true); + } + + /// hash + int get hash$1 { + final _$$ref = object$.ref; + return _objc_msgSend_xw2lbc(_$$ref.pointer, _sel_hash); + } + + /// initWithNumber:type: + MessagesNumberWrapper initWithNumber(objc.NSNumber number, {required int type}) { + final _$$ref = object$.ref; + final _$$ref$1 = number.ref; + final $ret = _objc_msgSend_9slupp( + _$$ref.retainAndReturnPointer(), + _sel_initWithNumber_type_, + _$$ref$1.pointer, + type, + ); + return MessagesNumberWrapper.fromPointer($ret, retain: false, release: true); + } + + /// isEqual: + bool isEqual(objc.ObjCObject? object) { + final _$$ref = object$.ref; + final _$$ref$1 = object?.ref; + return _objc_msgSend_19nvye5(_$$ref.pointer, _sel_isEqual_, _$$ref$1?.pointer ?? ffi.nullptr); + } + + /// number + objc.NSNumber get number { + final _$$ref = object$.ref; + final $ret = _objc_msgSend_151sglz(_$$ref.pointer, _sel_number); + return objc.NSNumber.fromPointer($ret, retain: true, release: true); + } + + /// setNumber: + set number(objc.NSNumber value) { + final _$$ref = object$.ref; + final _$$ref$1 = value.ref; + _objc_msgSend_xtuoz7(_$$ref.pointer, _sel_setNumber_, _$$ref$1.pointer); + } + + /// setType: + set type(int value) { + final _$$ref = object$.ref; + _objc_msgSend_4sp4xj(_$$ref.pointer, _sel_setType_, value); + } + + /// type + int get type { + final _$$ref = object$.ref; + return _objc_msgSend_1hz7y9r(_$$ref.pointer, _sel_type); + } +} + +/// MessagesPigeonInternalNull +extension type MessagesPigeonInternalNull._(objc.ObjCObject object$) + implements objc.ObjCObject, objc.NSObject { + /// Constructs a [MessagesPigeonInternalNull] that points to the same underlying object as [other]. + MessagesPigeonInternalNull.as(objc.ObjCObject other) : object$ = other { + assert(isA(object$)); + } + + /// Constructs a [MessagesPigeonInternalNull] that wraps the given raw object pointer. + MessagesPigeonInternalNull.fromPointer( + ffi.Pointer other, { + bool retain = false, + bool release = false, + }) : object$ = objc.ObjCObject(other, retain: retain, release: release) { + assert(isA(object$)); + } + + /// Returns whether [obj] is an instance of [MessagesPigeonInternalNull]. + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_MessagesPigeonInternalNull, + ); + + /// alloc + static MessagesPigeonInternalNull alloc() { + final $ret = _objc_msgSend_151sglz(_class_MessagesPigeonInternalNull, _sel_alloc); + return MessagesPigeonInternalNull.fromPointer($ret, retain: false, release: true); + } + + /// allocWithZone: + static MessagesPigeonInternalNull allocWithZone(ffi.Pointer zone) { + final $ret = _objc_msgSend_1cwp428( + _class_MessagesPigeonInternalNull, + _sel_allocWithZone_, + zone, + ); + return MessagesPigeonInternalNull.fromPointer($ret, retain: false, release: true); + } + + /// new + static MessagesPigeonInternalNull new$() { + final $ret = _objc_msgSend_151sglz(_class_MessagesPigeonInternalNull, _sel_new); + return MessagesPigeonInternalNull.fromPointer($ret, retain: false, release: true); + } + + /// Returns a new instance of MessagesPigeonInternalNull constructed with the default `new` method. + MessagesPigeonInternalNull() : this.as(new$().object$); +} + +extension MessagesPigeonInternalNull$Methods on MessagesPigeonInternalNull { + /// init + MessagesPigeonInternalNull init() { + final _$$ref$1 = object$.ref; + objc.checkOsVersionInternal( + 'MessagesPigeonInternalNull.init', + iOS: (false, (2, 0, 0)), + macOS: (false, (10, 0, 0)), + ); + final $ret = _objc_msgSend_151sglz(_$$ref$1.retainAndReturnPointer(), _sel_init); + return MessagesPigeonInternalNull.fromPointer($ret, retain: false, release: true); + } +} + +/// MessagesPigeonTypedData +extension type MessagesPigeonTypedData._(objc.ObjCObject object$) + implements objc.ObjCObject, objc.NSObject { + /// Constructs a [MessagesPigeonTypedData] that points to the same underlying object as [other]. + MessagesPigeonTypedData.as(objc.ObjCObject other) : object$ = other { + assert(isA(object$)); + } + + /// Constructs a [MessagesPigeonTypedData] that wraps the given raw object pointer. + MessagesPigeonTypedData.fromPointer( + ffi.Pointer other, { + bool retain = false, + bool release = false, + }) : object$ = objc.ObjCObject(other, retain: retain, release: release) { + assert(isA(object$)); + } + + /// Returns whether [obj] is an instance of [MessagesPigeonTypedData]. + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5(obj.ref.pointer, _sel_isKindOfClass_, _class_MessagesPigeonTypedData); + + /// alloc + static MessagesPigeonTypedData alloc() { + final $ret = _objc_msgSend_151sglz(_class_MessagesPigeonTypedData, _sel_alloc); + return MessagesPigeonTypedData.fromPointer($ret, retain: false, release: true); + } + + /// allocWithZone: + static MessagesPigeonTypedData allocWithZone(ffi.Pointer zone) { + final $ret = _objc_msgSend_1cwp428(_class_MessagesPigeonTypedData, _sel_allocWithZone_, zone); + return MessagesPigeonTypedData.fromPointer($ret, retain: false, release: true); + } +} + +extension MessagesPigeonTypedData$Methods on MessagesPigeonTypedData { + /// data + objc.NSData get data { + final _$$ref = object$.ref; + final $ret = _objc_msgSend_151sglz(_$$ref.pointer, _sel_data); + return objc.NSData.fromPointer($ret, retain: true, release: true); + } + + /// initWithData:type: + MessagesPigeonTypedData initWithData(objc.NSData data, {required int type}) { + final _$$ref = object$.ref; + final _$$ref$1 = data.ref; + final $ret = _objc_msgSend_9slupp( + _$$ref.retainAndReturnPointer(), + _sel_initWithData_type_, + _$$ref$1.pointer, + type, + ); + return MessagesPigeonTypedData.fromPointer($ret, retain: false, release: true); + } + + /// type + int get type { + final _$$ref = object$.ref; + return _objc_msgSend_1hz7y9r(_$$ref.pointer, _sel_type); + } +} + +/// Error class for passing custom error details to Dart side. +extension type PigeonError._(objc.ObjCObject object$) implements objc.ObjCObject, objc.NSObject { + /// Constructs a [PigeonError] that points to the same underlying object as [other]. + PigeonError.as(objc.ObjCObject other) : object$ = other { + assert(isA(object$)); + } + + /// Constructs a [PigeonError] that wraps the given raw object pointer. + PigeonError.fromPointer( + ffi.Pointer other, { + bool retain = false, + bool release = false, + }) : object$ = objc.ObjCObject(other, retain: retain, release: release) { + assert(isA(object$)); + } + + /// Returns whether [obj] is an instance of [PigeonError]. + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5(obj.ref.pointer, _sel_isKindOfClass_, _class_PigeonError); + + /// alloc + static PigeonError alloc() { + final $ret = _objc_msgSend_151sglz(_class_PigeonError, _sel_alloc); + return PigeonError.fromPointer($ret, retain: false, release: true); + } + + /// allocWithZone: + static PigeonError allocWithZone(ffi.Pointer zone) { + final $ret = _objc_msgSend_1cwp428(_class_PigeonError, _sel_allocWithZone_, zone); + return PigeonError.fromPointer($ret, retain: false, release: true); + } + + /// new + static PigeonError new$() { + final $ret = _objc_msgSend_151sglz(_class_PigeonError, _sel_new); + return PigeonError.fromPointer($ret, retain: false, release: true); + } + + /// Returns a new instance of PigeonError constructed with the default `new` method. + PigeonError() : this.as(new$().object$); +} + +extension PigeonError$Methods on PigeonError { + /// code + objc.NSString? get code { + final _$$ref = object$.ref; + final $ret = _objc_msgSend_151sglz(_$$ref.pointer, _sel_code); + return $ret.address == 0 ? null : objc.NSString.fromPointer($ret, retain: true, release: true); + } + + /// details + objc.NSString? get details { + final _$$ref = object$.ref; + final $ret = _objc_msgSend_151sglz(_$$ref.pointer, _sel_details); + return $ret.address == 0 ? null : objc.NSString.fromPointer($ret, retain: true, release: true); + } + + /// init + PigeonError init() { + final _$$ref$2 = object$.ref; + objc.checkOsVersionInternal( + 'PigeonError.init', + iOS: (false, (2, 0, 0)), + macOS: (false, (10, 0, 0)), + ); + final $ret = _objc_msgSend_151sglz(_$$ref$2.retainAndReturnPointer(), _sel_init); + return PigeonError.fromPointer($ret, retain: false, release: true); + } + + /// initWithCode:message:details: + PigeonError initWithCode(objc.NSString? code, {objc.NSString? message, objc.NSString? details}) { + final _$$ref = object$.ref; + final _$$ref$1 = code?.ref; + final _$$ref$2 = message?.ref; + final _$$ref$3 = details?.ref; + final $ret = _objc_msgSend_11spmsz( + _$$ref.retainAndReturnPointer(), + _sel_initWithCode_message_details_, + _$$ref$1?.pointer ?? ffi.nullptr, + _$$ref$2?.pointer ?? ffi.nullptr, + _$$ref$3?.pointer ?? ffi.nullptr, + ); + return PigeonError.fromPointer($ret, retain: false, release: true); + } + + /// message + objc.NSString? get message { + final _$$ref = object$.ref; + final $ret = _objc_msgSend_151sglz(_$$ref.pointer, _sel_message); + return $ret.address == 0 ? null : objc.NSString.fromPointer($ret, retain: true, release: true); + } + + /// setCode: + set code(objc.NSString? value) { + final _$$ref = object$.ref; + final _$$ref$1 = value?.ref; + _objc_msgSend_xtuoz7(_$$ref.pointer, _sel_setCode_, _$$ref$1?.pointer ?? ffi.nullptr); + } + + /// setDetails: + set details(objc.NSString? value) { + final _$$ref = object$.ref; + final _$$ref$1 = value?.ref; + _objc_msgSend_xtuoz7(_$$ref.pointer, _sel_setDetails_, _$$ref$1?.pointer ?? ffi.nullptr); + } + + /// setMessage: + set message(objc.NSString? value) { + final _$$ref = object$.ref; + final _$$ref$1 = value?.ref; + _objc_msgSend_xtuoz7(_$$ref.pointer, _sel_setMessage_, _$$ref$1?.pointer ?? ffi.nullptr); + } +} + +/// Generated bridge class from Pigeon that moves data from Swift to Objective-C. +extension type SharedPreferencesPigeonOptionsBridge._(objc.ObjCObject object$) + implements objc.ObjCObject, objc.NSObject { + /// Constructs a [SharedPreferencesPigeonOptionsBridge] that points to the same underlying object as [other]. + SharedPreferencesPigeonOptionsBridge.as(objc.ObjCObject other) : object$ = other { + assert(isA(object$)); + } + + /// Constructs a [SharedPreferencesPigeonOptionsBridge] that wraps the given raw object pointer. + SharedPreferencesPigeonOptionsBridge.fromPointer( + ffi.Pointer other, { + bool retain = false, + bool release = false, + }) : object$ = objc.ObjCObject(other, retain: retain, release: release) { + assert(isA(object$)); + } + + /// Returns whether [obj] is an instance of [SharedPreferencesPigeonOptionsBridge]. + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_SharedPreferencesPigeonOptionsBridge, + ); + + /// alloc + static SharedPreferencesPigeonOptionsBridge alloc() { + final $ret = _objc_msgSend_151sglz(_class_SharedPreferencesPigeonOptionsBridge, _sel_alloc); + return SharedPreferencesPigeonOptionsBridge.fromPointer($ret, retain: false, release: true); + } + + /// allocWithZone: + static SharedPreferencesPigeonOptionsBridge allocWithZone(ffi.Pointer zone) { + final $ret = _objc_msgSend_1cwp428( + _class_SharedPreferencesPigeonOptionsBridge, + _sel_allocWithZone_, + zone, + ); + return SharedPreferencesPigeonOptionsBridge.fromPointer($ret, retain: false, release: true); + } +} + +extension SharedPreferencesPigeonOptionsBridge$Methods on SharedPreferencesPigeonOptionsBridge { + /// initWithSuiteName: + SharedPreferencesPigeonOptionsBridge initWithSuiteName(objc.NSString? suiteName) { + final _$$ref = object$.ref; + final _$$ref$1 = suiteName?.ref; + final $ret = _objc_msgSend_1sotr3r( + _$$ref.retainAndReturnPointer(), + _sel_initWithSuiteName_, + _$$ref$1?.pointer ?? ffi.nullptr, + ); + return SharedPreferencesPigeonOptionsBridge.fromPointer($ret, retain: false, release: true); + } + + /// setSuiteName: + set suiteName(objc.NSString? value) { + final _$$ref = object$.ref; + final _$$ref$1 = value?.ref; + _objc_msgSend_xtuoz7(_$$ref.pointer, _sel_setSuiteName_, _$$ref$1?.pointer ?? ffi.nullptr); + } + + /// suiteName + objc.NSString? get suiteName { + final _$$ref = object$.ref; + final $ret = _objc_msgSend_151sglz(_$$ref.pointer, _sel_suiteName); + return $ret.address == 0 ? null : objc.NSString.fromPointer($ret, retain: true, release: true); + } +} + +/// Generated setup class from Pigeon to register implemented UserDefaultsApi classes. +extension type UserDefaultsApiSetup._(objc.ObjCObject object$) + implements objc.ObjCObject, objc.NSObject { + /// Constructs a [UserDefaultsApiSetup] that points to the same underlying object as [other]. + UserDefaultsApiSetup.as(objc.ObjCObject other) : object$ = other { + assert(isA(object$)); + } + + /// Constructs a [UserDefaultsApiSetup] that wraps the given raw object pointer. + UserDefaultsApiSetup.fromPointer( + ffi.Pointer other, { + bool retain = false, + bool release = false, + }) : object$ = objc.ObjCObject(other, retain: retain, release: release) { + assert(isA(object$)); + } + + /// Returns whether [obj] is an instance of [UserDefaultsApiSetup]. + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5(obj.ref.pointer, _sel_isKindOfClass_, _class_UserDefaultsApiSetup); + + /// alloc + static UserDefaultsApiSetup alloc() { + final $ret = _objc_msgSend_151sglz(_class_UserDefaultsApiSetup, _sel_alloc); + return UserDefaultsApiSetup.fromPointer($ret, retain: false, release: true); + } + + /// allocWithZone: + static UserDefaultsApiSetup allocWithZone(ffi.Pointer zone) { + final $ret = _objc_msgSend_1cwp428(_class_UserDefaultsApiSetup, _sel_allocWithZone_, zone); + return UserDefaultsApiSetup.fromPointer($ret, retain: false, release: true); + } + + /// getInstanceWithName: + static UserDefaultsApiSetup? getInstanceWithName(objc.NSString name) { + final _$$ref = name.ref; + final $ret = _objc_msgSend_1sotr3r( + _class_UserDefaultsApiSetup, + _sel_getInstanceWithName_, + _$$ref.pointer, + ); + return $ret.address == 0 + ? null + : UserDefaultsApiSetup.fromPointer($ret, retain: true, release: true); + } + + /// new + static UserDefaultsApiSetup new$() { + final $ret = _objc_msgSend_151sglz(_class_UserDefaultsApiSetup, _sel_new); + return UserDefaultsApiSetup.fromPointer($ret, retain: false, release: true); + } + + /// Returns a new instance of UserDefaultsApiSetup constructed with the default `new` method. + UserDefaultsApiSetup() : this.as(new$().object$); +} + +extension UserDefaultsApiSetup$Methods on UserDefaultsApiSetup { + /// Removes all properties from shared preferences data set with matching prefix. + void clearWithAllowList( + objc.NSArray? allowList, { + required SharedPreferencesPigeonOptionsBridge options, + required PigeonError wrappedError, + }) { + final _$$ref = object$.ref; + final _$$ref$1 = allowList?.ref; + final _$$ref$2 = options.ref; + final _$$ref$3 = wrappedError.ref; + _objc_msgSend_r8gdi7( + _$$ref.pointer, + _sel_clearWithAllowList_options_wrappedError_, + _$$ref$1?.pointer ?? ffi.nullptr, + _$$ref$2.pointer, + _$$ref$3.pointer, + ); + } + + /// Gets all properties from shared preferences data set with matching prefix. + objc.NSDictionary? getAllWithAllowList( + objc.NSArray? allowList, { + required SharedPreferencesPigeonOptionsBridge options, + required PigeonError wrappedError, + }) { + final _$$ref = object$.ref; + final _$$ref$1 = allowList?.ref; + final _$$ref$2 = options.ref; + final _$$ref$3 = wrappedError.ref; + final $ret = _objc_msgSend_11spmsz( + _$$ref.pointer, + _sel_getAllWithAllowList_options_wrappedError_, + _$$ref$1?.pointer ?? ffi.nullptr, + _$$ref$2.pointer, + _$$ref$3.pointer, + ); + return $ret.address == 0 + ? null + : objc.NSDictionary.fromPointer($ret, retain: true, release: true); + } + + /// Gets all properties from shared preferences data set with matching prefix. + objc.NSArray? getKeysWithAllowList( + objc.NSArray? allowList, { + required SharedPreferencesPigeonOptionsBridge options, + required PigeonError wrappedError, + }) { + final _$$ref = object$.ref; + final _$$ref$1 = allowList?.ref; + final _$$ref$2 = options.ref; + final _$$ref$3 = wrappedError.ref; + final $ret = _objc_msgSend_11spmsz( + _$$ref.pointer, + _sel_getKeysWithAllowList_options_wrappedError_, + _$$ref$1?.pointer ?? ffi.nullptr, + _$$ref$2.pointer, + _$$ref$3.pointer, + ); + return $ret.address == 0 ? null : objc.NSArray.fromPointer($ret, retain: true, release: true); + } + + /// Gets individual value stored with [key], if any. + objc.NSObject? getValueWithKey( + objc.NSString key, { + required SharedPreferencesPigeonOptionsBridge options, + required PigeonError wrappedError, + }) { + final _$$ref = object$.ref; + final _$$ref$1 = key.ref; + final _$$ref$2 = options.ref; + final _$$ref$3 = wrappedError.ref; + final $ret = _objc_msgSend_11spmsz( + _$$ref.pointer, + _sel_getValueWithKey_options_wrappedError_, + _$$ref$1.pointer, + _$$ref$2.pointer, + _$$ref$3.pointer, + ); + return $ret.address == 0 ? null : objc.NSObject.fromPointer($ret, retain: true, release: true); + } + + /// init + UserDefaultsApiSetup init() { + final _$$ref$3 = object$.ref; + objc.checkOsVersionInternal( + 'UserDefaultsApiSetup.init', + iOS: (false, (2, 0, 0)), + macOS: (false, (10, 0, 0)), + ); + final $ret = _objc_msgSend_151sglz(_$$ref$3.retainAndReturnPointer(), _sel_init); + return UserDefaultsApiSetup.fromPointer($ret, retain: false, release: true); + } + + /// Adds property to shared preferences data set of type String. + void setWithKey( + objc.NSString key, { + required objc.NSObject value, + required SharedPreferencesPigeonOptionsBridge options, + required PigeonError wrappedError, + }) { + final _$$ref = object$.ref; + final _$$ref$1 = key.ref; + final _$$ref$2 = value.ref; + final _$$ref$3 = options.ref; + final _$$ref$4 = wrappedError.ref; + _objc_msgSend_mlcr8l( + _$$ref.pointer, + _sel_setWithKey_value_options_wrappedError_, + _$$ref$1.pointer, + _$$ref$2.pointer, + _$$ref$3.pointer, + _$$ref$4.pointer, + ); + } +} + +@ffi.Native>( + symbol: 'OBJC_CLASS_\$__TtC6Runner26LegacyUserDefaultsApiSetup', +) +external ffi.Pointer _class_LegacyUserDefaultsApiSetup_raw; +final _class_LegacyUserDefaultsApiSetup = objc.getClass( + "Runner.LegacyUserDefaultsApiSetup", + () => ffi.Native.addressOf>( + _class_LegacyUserDefaultsApiSetup_raw, + ).cast(), +); +@ffi.Native>( + symbol: 'OBJC_CLASS_\$__TtC6Runner21MessagesNumberWrapper', +) +external ffi.Pointer _class_MessagesNumberWrapper_raw; +final _class_MessagesNumberWrapper = objc.getClass( + "Runner.MessagesNumberWrapper", + () => ffi.Native.addressOf>( + _class_MessagesNumberWrapper_raw, + ).cast(), +); +@ffi.Native>( + symbol: 'OBJC_CLASS_\$__TtC6Runner26MessagesPigeonInternalNull', +) +external ffi.Pointer _class_MessagesPigeonInternalNull_raw; +final _class_MessagesPigeonInternalNull = objc.getClass( + "Runner.MessagesPigeonInternalNull", + () => ffi.Native.addressOf>( + _class_MessagesPigeonInternalNull_raw, + ).cast(), +); +@ffi.Native>( + symbol: 'OBJC_CLASS_\$__TtC6Runner23MessagesPigeonTypedData', +) +external ffi.Pointer _class_MessagesPigeonTypedData_raw; +final _class_MessagesPigeonTypedData = objc.getClass( + "Runner.MessagesPigeonTypedData", + () => ffi.Native.addressOf>( + _class_MessagesPigeonTypedData_raw, + ).cast(), +); +@ffi.Native>(symbol: 'OBJC_CLASS_\$__TtC6Runner11PigeonError') +external ffi.Pointer _class_PigeonError_raw; +final _class_PigeonError = objc.getClass( + "Runner.PigeonError", + () => ffi.Native.addressOf>(_class_PigeonError_raw).cast(), +); +@ffi.Native>( + symbol: 'OBJC_CLASS_\$__TtC6Runner36SharedPreferencesPigeonOptionsBridge', +) +external ffi.Pointer _class_SharedPreferencesPigeonOptionsBridge_raw; +final _class_SharedPreferencesPigeonOptionsBridge = objc.getClass( + "Runner.SharedPreferencesPigeonOptionsBridge", + () => ffi.Native.addressOf>( + _class_SharedPreferencesPigeonOptionsBridge_raw, + ).cast(), +); +@ffi.Native>( + symbol: 'OBJC_CLASS_\$__TtC6Runner20UserDefaultsApiSetup', +) +external ffi.Pointer _class_UserDefaultsApiSetup_raw; +final _class_UserDefaultsApiSetup = objc.getClass( + "Runner.UserDefaultsApiSetup", + () => ffi.Native.addressOf>( + _class_UserDefaultsApiSetup_raw, + ).cast(), +); +final _objc_msgSend_11spmsz = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + >() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + >(); +final _objc_msgSend_151sglz = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ) + > + >() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ) + >(); +final _objc_msgSend_19nvye5 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + >() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + >(); +final _objc_msgSend_1cwp428 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + >() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + >(); +final _objc_msgSend_1hz7y9r = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, ffi.Pointer) + > + >() + .asFunction, ffi.Pointer)>(); +final _objc_msgSend_1sotr3r = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + >() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + >(); +final _objc_msgSend_4sp4xj = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ) + > + >() + .asFunction< + void Function(ffi.Pointer, ffi.Pointer, int) + >(); +final _objc_msgSend_9slupp = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ) + > + >() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ) + >(); +final _objc_msgSend_mlcr8l = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + >() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + >(); +final _objc_msgSend_pfv6jd = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + >() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + >(); +final _objc_msgSend_r1s65y = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ) + > + >() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer, + ) + >(); +final _objc_msgSend_r8gdi7 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + >() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + >(); +final _objc_msgSend_rnu2c5 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ) + > + >() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ) + >(); +final _objc_msgSend_xtuoz7 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + >() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + >(); +final _objc_msgSend_xw2lbc = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, ffi.Pointer) + > + >() + .asFunction, ffi.Pointer)>(); +late final _sel_alloc = objc.registerName("alloc"); +late final _sel_allocWithZone_ = objc.registerName("allocWithZone:"); +late final _sel_clearWithAllowList_options_wrappedError_ = objc.registerName( + "clearWithAllowList:options:wrappedError:", +); +late final _sel_clearWithPrefix_allowList_wrappedError_ = objc.registerName( + "clearWithPrefix:allowList:wrappedError:", +); +late final _sel_code = objc.registerName("code"); +late final _sel_copyWithZone_ = objc.registerName("copyWithZone:"); +late final _sel_data = objc.registerName("data"); +late final _sel_details = objc.registerName("details"); +late final _sel_getAllWithAllowList_options_wrappedError_ = objc.registerName( + "getAllWithAllowList:options:wrappedError:", +); +late final _sel_getAllWithPrefix_allowList_wrappedError_ = objc.registerName( + "getAllWithPrefix:allowList:wrappedError:", +); +late final _sel_getInstanceWithName_ = objc.registerName("getInstanceWithName:"); +late final _sel_getKeysWithAllowList_options_wrappedError_ = objc.registerName( + "getKeysWithAllowList:options:wrappedError:", +); +late final _sel_getValueWithKey_options_wrappedError_ = objc.registerName( + "getValueWithKey:options:wrappedError:", +); +late final _sel_hash = objc.registerName("hash"); +late final _sel_init = objc.registerName("init"); +late final _sel_initWithCode_message_details_ = objc.registerName("initWithCode:message:details:"); +late final _sel_initWithData_type_ = objc.registerName("initWithData:type:"); +late final _sel_initWithNumber_type_ = objc.registerName("initWithNumber:type:"); +late final _sel_initWithSuiteName_ = objc.registerName("initWithSuiteName:"); +late final _sel_isEqual_ = objc.registerName("isEqual:"); +late final _sel_isKindOfClass_ = objc.registerName("isKindOfClass:"); +late final _sel_message = objc.registerName("message"); +late final _sel_new = objc.registerName("new"); +late final _sel_number = objc.registerName("number"); +late final _sel_removeWithKey_wrappedError_ = objc.registerName("removeWithKey:wrappedError:"); +late final _sel_setBoolWithKey_value_wrappedError_ = objc.registerName( + "setBoolWithKey:value:wrappedError:", +); +late final _sel_setCode_ = objc.registerName("setCode:"); +late final _sel_setDetails_ = objc.registerName("setDetails:"); +late final _sel_setDoubleWithKey_value_wrappedError_ = objc.registerName( + "setDoubleWithKey:value:wrappedError:", +); +late final _sel_setMessage_ = objc.registerName("setMessage:"); +late final _sel_setNumber_ = objc.registerName("setNumber:"); +late final _sel_setSuiteName_ = objc.registerName("setSuiteName:"); +late final _sel_setType_ = objc.registerName("setType:"); +late final _sel_setValueWithKey_value_wrappedError_ = objc.registerName( + "setValueWithKey:value:wrappedError:", +); +late final _sel_setWithKey_value_options_wrappedError_ = objc.registerName( + "setWithKey:value:options:wrappedError:", +); +late final _sel_suiteName = objc.registerName("suiteName"); +late final _sel_type = objc.registerName("type"); +typedef instancetype = ffi.Pointer; +typedef Dartinstancetype = objc.ObjCObject; diff --git a/packages/shared_preferences/shared_preferences_foundation/pigeons/messages.dart b/packages/shared_preferences/shared_preferences_foundation/pigeons/messages.dart index 4a7923fae91d..4197fa8acf2f 100644 --- a/packages/shared_preferences/shared_preferences_foundation/pigeons/messages.dart +++ b/packages/shared_preferences/shared_preferences_foundation/pigeons/messages.dart @@ -9,6 +9,8 @@ import 'package:pigeon/pigeon.dart'; dartOut: 'lib/src/messages.g.dart', swiftOut: 'darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/messages.g.swift', + swiftOptions: SwiftOptions(useFfi: true), + fileSpecificClassNameComponent: 'Messages', copyrightHeader: 'pigeons/copyright_header.txt', ), ) diff --git a/packages/shared_preferences/shared_preferences_foundation/pubspec.yaml b/packages/shared_preferences/shared_preferences_foundation/pubspec.yaml index d3e1a3fef863..716f5b9183ec 100644 --- a/packages/shared_preferences/shared_preferences_foundation/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_foundation/pubspec.yaml @@ -22,14 +22,21 @@ flutter: sharedDarwinSource: true dependencies: + ffi: ^2.1.4 flutter: sdk: flutter + objective_c: ^9.2.1 shared_preferences_platform_interface: ^2.4.0 dev_dependencies: + ffigen: ^21.0.0 flutter_test: sdk: flutter - pigeon: ^26.1.0 + pigeon: + git: + url: https://github.com/tarrinneal/packages.git + path: packages/pigeon + ref: Kamyshin topics: - persistence diff --git a/packages/shared_preferences/shared_preferences_foundation/tool/pigeon/messages_ffigen_config.dart b/packages/shared_preferences/shared_preferences_foundation/tool/pigeon/messages_ffigen_config.dart new file mode 100644 index 000000000000..edf81e42a23e --- /dev/null +++ b/packages/shared_preferences/shared_preferences_foundation/tool/pigeon/messages_ffigen_config.dart @@ -0,0 +1,139 @@ +// Autogenerated from Pigeon (v27.4.0), do not edit directly. +// See also: https://pub.dev/packages/pigeon +// ignore_for_file: depend_on_referenced_packages + +import 'dart:io'; + +import 'package:ffigen/ffigen.dart' as fg; +import 'package:path/path.dart' as path; +import 'package:pub_semver/pub_semver.dart'; +import 'package:swift2objc/swift2objc.dart'; +import 'package:swiftgen/src/config.dart'; +import 'package:swiftgen/swiftgen.dart'; + +Future main(List args) async { + Directory.current = Platform.script.resolve('../..').toFilePath(); + Uri sdk; + if (args.isNotEmpty) { + sdk = Uri.directory(args[0]); + } else { + sdk = await _getAppleSdk(); + } + final bool isValidSdk = + File(path.join(sdk.toFilePath(), 'SDKSettings.json')).existsSync() || + File(path.join(sdk.toFilePath(), 'SDKSettings.plist')).existsSync(); + if (!isValidSdk) { + sdk = await _getAppleSdk(); + } + + final classes = { + 'MessagesPigeonInternalNull', + 'MessagesPigeonTypedData', + 'MessagesNumberWrapper', + 'LegacyUserDefaultsApi', + 'LegacyUserDefaultsApiSetup', + 'UserDefaultsApi', + 'UserDefaultsApiSetup', + 'SharedPreferencesPigeonOptionsBridge', + 'PigeonError', + }; + final enums = {'MessagesPigeonInternalNumberType'}; + var targetTriple = ''; + if (targetTriple.isEmpty) { + try { + targetTriple = sdk.path.toLowerCase().contains('macosx') + ? await macOSX64TargetTripleLatest + : await iOSArm64TargetTripleLatest; + } catch (_) { + targetTriple = sdk.path.toLowerCase().contains('macosx') + ? 'x86_64-apple-macosx' + : 'arm64-apple-ios'; + } + } + + await SwiftGenerator( + target: Target(triple: targetTriple, sdk: sdk), + inputs: [ + ObjCCompatibleSwiftFileInput( + files: [ + Uri.file( + 'darwin/shared_preferences_foundation/Sources/shared_preferences_foundation/messages.g.swift', + ), + ], + ), + ], + include: (Declaration d) => classes.contains(d.name) || enums.contains(d.name), + output: Output( + module: 'Runner', + dartFile: Uri.file('lib/src/messages.g.ffi.dart'), + objectiveCFile: Uri.file( + 'darwin/shared_preferences_foundation/Sources/shared_preferences_foundation_objc_gen/messages.g.m', + ), + preamble: ''' + // Copyright 2013 The Flutter Authors + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + + // ignore_for_file: always_specify_types, camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field + // coverage:ignore-file + ''', + ), + ffigen: FfiGeneratorOptions( + objectiveC: fg.ObjectiveC( + externalVersions: fg.ExternalVersions( + ios: fg.Versions(min: Version(13, 0, 0)), + macos: fg.Versions(min: Version(10, 14, 0)), + ), + interfaces: fg.Interfaces( + include: (fg.Declaration decl) => + classes.contains(decl.originalName) || enums.contains(decl.originalName), + module: (fg.Declaration decl) { + // Assign declarations to their destination module. Foundation classes starting with 'NS' + // return null so ffigen treats them as external system framework types (provided by + // package:objective_c) rather than generating local module wrappers for them. + // Specific types (like NSURLCredential) return 'Runner' so ffigen generates the + // explicit Dart FFI bindings required by this plugin. + + return decl.originalName.startsWith('NS') ? null : 'Runner'; + }, + ), + protocols: fg.Protocols( + include: (fg.Declaration decl) => classes.contains(decl.originalName), + module: (fg.Declaration decl) { + // Assign declarations to their destination module. Foundation classes starting with 'NS' + // return null so ffigen treats them as external system framework types (provided by + // package:objective_c) rather than generating local module wrappers for them. + // Specific types (like NSURLCredential) return 'Runner' so ffigen generates the + // explicit Dart FFI bindings required by this plugin. + + return decl.originalName.startsWith('NS') ? null : 'Runner'; + }, + ), + ), + ), + ).generate( + logger: null, + tempDirectory: Uri.directory( + 'darwin/shared_preferences_foundation/Sources/shared_preferences_foundation_objc_gen', + ), + ); +} + +Future _getAppleSdk() async { + try { + final ProcessResult result = await Process.run('xcrun', [ + '--sdk', + 'iphoneos', + '--show-sdk-path', + ]); + if (result.exitCode == 0) { + final String sdkPath = result.stdout.toString().trim(); + if (sdkPath.isNotEmpty && + (File(path.join(sdkPath, 'SDKSettings.json')).existsSync() || + File(path.join(sdkPath, 'SDKSettings.plist')).existsSync())) { + return Uri.directory(sdkPath); + } + } + } catch (_) {} + return iOSSdk; +}