[pigeon] Add Flutter API integration tests (#3066)

* Add the new wrapper APIs

* Regenerate files

* Add the new integration tests

* macOS Swift implementation

* iOS Swift implementation

* Android Kotlin implementation; some tests disabled

* Android Java implementation

* iOS Obj-C implementation

* Windows C++ implementation
This commit is contained in:
stuartmorgan
2023-01-18 15:49:46 -08:00
committed by GitHub
parent c68bf70211
commit 88859a8eb2
18 changed files with 3870 additions and 58 deletions

View File

@ -187,16 +187,76 @@ abstract class HostIntegrationCoreApi {
@async
void callFlutterNoop();
@async
@ObjCSelector('callFlutterEchoAllTypes:')
AllTypes callFlutterEchoAllTypes(AllTypes everything);
// TODO(stuartmorgan): Add callFlutterEchoAllNullableTypes and the associated
// test once either https://github.com/flutter/flutter/issues/116117 is fixed,
// or the problematic type is moved out of AllNullableTypes and into its own
// test, since the type mismatch breaks the second `encode` round.
@async
@ObjCSelector('callFlutterSendMultipleNullableTypesABool:anInt:aString:')
AllNullableTypes callFlutterSendMultipleNullableTypes(
bool? aNullableBool, int? aNullableInt, String? aNullableString);
@async
@ObjCSelector('callFlutterEchoBool:')
bool callFlutterEchoBool(bool aBool);
@async
@ObjCSelector('callFlutterEchoInt:')
int callFlutterEchoInt(int anInt);
@async
@ObjCSelector('callFlutterEchoDouble:')
double callFlutterEchoDouble(double aDouble);
@async
@ObjCSelector('callFlutterEchoString:')
String callFlutterEchoString(String aString);
// TODO(stuartmorgan): Add callFlutterEchoAllTypes and the associated test
// once either https://github.com/flutter/flutter/issues/116117 is fixed, or
// the problematic type is moved out of AllTypes and into its own test, since
// the type mismatch breaks the second `encode` round.
@async
@ObjCSelector('callFlutterEchoUint8List:')
Uint8List callFlutterEchoUint8List(Uint8List aList);
// TODO(stuartmorgan): Fill in the rest of the callFlutterEcho* tests.
@async
@ObjCSelector('callFlutterEchoList:')
List<Object?> callFlutterEchoList(List<Object?> aList);
@async
@ObjCSelector('callFlutterEchoMap:')
Map<String?, Object?> callFlutterEchoMap(Map<String?, Object?> aMap);
@async
@ObjCSelector('callFlutterEchoNullableBool:')
bool? callFlutterEchoNullableBool(bool? aBool);
@async
@ObjCSelector('callFlutterEchoNullableInt:')
int? callFlutterEchoNullableInt(int? anInt);
@async
@ObjCSelector('callFlutterEchoNullableDouble:')
double? callFlutterEchoNullableDouble(double? aDouble);
@async
@ObjCSelector('callFlutterEchoNullableString:')
String? callFlutterEchoNullableString(String? aString);
@async
@ObjCSelector('callFlutterEchoNullableUint8List:')
Uint8List? callFlutterEchoNullableUint8List(Uint8List? aList);
@async
@ObjCSelector('callFlutterEchoNullableList:')
List<Object?>? callFlutterEchoNullableList(List<Object?>? aList);
@async
@ObjCSelector('callFlutterEchoNullableMap:')
Map<String?, Object?>? callFlutterEchoNullableMap(
Map<String?, Object?>? aMap);
}
/// The core interface that the Dart platform_test code implements for host
@ -280,7 +340,7 @@ abstract class FlutterIntegrationCoreApi {
/// Returns the passed map, to test serialization and deserialization.
@ObjCSelector('echoNullableMap:')
Map<String?, Object?> echoNullableMap(Map<String?, Object?> aMap);
Map<String?, Object?>? echoNullableMap(Map<String?, Object?>? aMap);
}
/// An API that can be implemented for minimal, compile-only tests.

View File

@ -13,6 +13,8 @@ import com.example.alternate_language_test_plugin.CoreTests.FlutterIntegrationCo
import com.example.alternate_language_test_plugin.CoreTests.HostIntegrationCoreApi;
import com.example.alternate_language_test_plugin.CoreTests.Result;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import java.util.List;
import java.util.Map;
/** This plugin handles the native side of the integration tests in example/integration_test/. */
public class AlternateLanguageTestPlugin implements FlutterPlugin, HostIntegrationCoreApi {
@ -154,6 +156,67 @@ public class AlternateLanguageTestPlugin implements FlutterPlugin, HostIntegrati
});
}
@Override
public void callFlutterEchoAllTypes(@NonNull AllTypes everything, Result<AllTypes> result) {
flutterApi.echoAllTypes(
everything,
new FlutterIntegrationCoreApi.Reply<AllTypes>() {
public void reply(AllTypes value) {
result.success(value);
}
});
}
@Override
public void callFlutterSendMultipleNullableTypes(
@Nullable Boolean aNullableBool,
@Nullable Long aNullableInt,
@Nullable String aNullableString,
Result<AllNullableTypes> result) {
flutterApi.sendMultipleNullableTypes(
aNullableBool,
aNullableInt,
aNullableString,
new FlutterIntegrationCoreApi.Reply<AllNullableTypes>() {
public void reply(AllNullableTypes value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoBool(@NonNull Boolean aBool, Result<Boolean> result) {
flutterApi.echoBool(
aBool,
new FlutterIntegrationCoreApi.Reply<Boolean>() {
public void reply(Boolean value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoInt(@NonNull Long anInt, Result<Long> result) {
flutterApi.echoInt(
anInt,
new FlutterIntegrationCoreApi.Reply<Long>() {
public void reply(Long value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoDouble(@NonNull Double aDouble, Result<Double> result) {
flutterApi.echoDouble(
aDouble,
new FlutterIntegrationCoreApi.Reply<Double>() {
public void reply(Double value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoString(@NonNull String aString, Result<String> result) {
flutterApi.echoString(
@ -164,4 +227,117 @@ public class AlternateLanguageTestPlugin implements FlutterPlugin, HostIntegrati
}
});
}
@Override
public void callFlutterEchoUint8List(@NonNull byte[] aList, Result<byte[]> result) {
flutterApi.echoUint8List(
aList,
new FlutterIntegrationCoreApi.Reply<byte[]>() {
public void reply(byte[] value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoList(@NonNull List<Object> aList, Result<List<Object>> result) {
flutterApi.echoList(
aList,
new FlutterIntegrationCoreApi.Reply<List<Object>>() {
public void reply(List<Object> value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoMap(
@NonNull Map<String, Object> aMap, Result<Map<String, Object>> result) {
flutterApi.echoMap(
aMap,
new FlutterIntegrationCoreApi.Reply<Map<String, Object>>() {
public void reply(Map<String, Object> value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoNullableBool(@Nullable Boolean aBool, Result<Boolean> result) {
flutterApi.echoNullableBool(
aBool,
new FlutterIntegrationCoreApi.Reply<Boolean>() {
public void reply(Boolean value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoNullableInt(@Nullable Long anInt, Result<Long> result) {
flutterApi.echoNullableInt(
anInt,
new FlutterIntegrationCoreApi.Reply<Long>() {
public void reply(Long value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoNullableDouble(@Nullable Double aDouble, Result<Double> result) {
flutterApi.echoNullableDouble(
aDouble,
new FlutterIntegrationCoreApi.Reply<Double>() {
public void reply(Double value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoNullableString(@Nullable String aString, Result<String> result) {
flutterApi.echoNullableString(
aString,
new FlutterIntegrationCoreApi.Reply<String>() {
public void reply(String value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoNullableUint8List(@Nullable byte[] aList, Result<byte[]> result) {
flutterApi.echoNullableUint8List(
aList,
new FlutterIntegrationCoreApi.Reply<byte[]>() {
public void reply(byte[] value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoNullableList(
@Nullable List<Object> aList, Result<List<Object>> result) {
flutterApi.echoNullableList(
aList,
new FlutterIntegrationCoreApi.Reply<List<Object>>() {
public void reply(List<Object> value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoNullableMap(
@Nullable Map<String, Object> aMap, Result<Map<String, Object>> result) {
flutterApi.echoNullableMap(
aMap,
new FlutterIntegrationCoreApi.Reply<Map<String, Object>>() {
public void reply(Map<String, Object> value) {
result.success(value);
}
});
}
}

View File

@ -831,8 +831,43 @@ public class CoreTests {
void callFlutterNoop(Result<Void> result);
void callFlutterEchoAllTypes(@NonNull AllTypes everything, Result<AllTypes> result);
void callFlutterSendMultipleNullableTypes(
@Nullable Boolean aNullableBool,
@Nullable Long aNullableInt,
@Nullable String aNullableString,
Result<AllNullableTypes> result);
void callFlutterEchoBool(@NonNull Boolean aBool, Result<Boolean> result);
void callFlutterEchoInt(@NonNull Long anInt, Result<Long> result);
void callFlutterEchoDouble(@NonNull Double aDouble, Result<Double> result);
void callFlutterEchoString(@NonNull String aString, Result<String> result);
void callFlutterEchoUint8List(@NonNull byte[] aList, Result<byte[]> result);
void callFlutterEchoList(@NonNull List<Object> aList, Result<List<Object>> result);
void callFlutterEchoMap(@NonNull Map<String, Object> aMap, Result<Map<String, Object>> result);
void callFlutterEchoNullableBool(@Nullable Boolean aBool, Result<Boolean> result);
void callFlutterEchoNullableInt(@Nullable Long anInt, Result<Long> result);
void callFlutterEchoNullableDouble(@Nullable Double aDouble, Result<Double> result);
void callFlutterEchoNullableString(@Nullable String aString, Result<String> result);
void callFlutterEchoNullableUint8List(@Nullable byte[] aList, Result<byte[]> result);
void callFlutterEchoNullableList(@Nullable List<Object> aList, Result<List<Object>> result);
void callFlutterEchoNullableMap(
@Nullable Map<String, Object> aMap, Result<Map<String, Object>> result);
/** The codec used by HostIntegrationCoreApi. */
static MessageCodec<Object> getCodec() {
return HostIntegrationCoreApiCodec.INSTANCE;
@ -1463,6 +1498,210 @@ public class CoreTests {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoAllTypes",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
AllTypes everythingArg = (AllTypes) args.get(0);
if (everythingArg == null) {
throw new NullPointerException("everythingArg unexpectedly null.");
}
Result<AllTypes> resultCallback =
new Result<AllTypes>() {
public void success(AllTypes result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoAllTypes(everythingArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterSendMultipleNullableTypes",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
Boolean aNullableBoolArg = (Boolean) args.get(0);
Number aNullableIntArg = (Number) args.get(1);
String aNullableStringArg = (String) args.get(2);
Result<AllNullableTypes> resultCallback =
new Result<AllNullableTypes>() {
public void success(AllNullableTypes result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterSendMultipleNullableTypes(
aNullableBoolArg,
(aNullableIntArg == null) ? null : aNullableIntArg.longValue(),
aNullableStringArg,
resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoBool",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
Boolean aBoolArg = (Boolean) args.get(0);
if (aBoolArg == null) {
throw new NullPointerException("aBoolArg unexpectedly null.");
}
Result<Boolean> resultCallback =
new Result<Boolean>() {
public void success(Boolean result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoBool(aBoolArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoInt",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
Number anIntArg = (Number) args.get(0);
if (anIntArg == null) {
throw new NullPointerException("anIntArg unexpectedly null.");
}
Result<Long> resultCallback =
new Result<Long>() {
public void success(Long result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoInt(
(anIntArg == null) ? null : anIntArg.longValue(), resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoDouble",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
Double aDoubleArg = (Double) args.get(0);
if (aDoubleArg == null) {
throw new NullPointerException("aDoubleArg unexpectedly null.");
}
Result<Double> resultCallback =
new Result<Double>() {
public void success(Double result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoDouble(aDoubleArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
@ -1503,6 +1742,386 @@ public class CoreTests {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoUint8List",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
byte[] aListArg = (byte[]) args.get(0);
if (aListArg == null) {
throw new NullPointerException("aListArg unexpectedly null.");
}
Result<byte[]> resultCallback =
new Result<byte[]>() {
public void success(byte[] result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoUint8List(aListArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoList",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
List<Object> aListArg = (List<Object>) args.get(0);
if (aListArg == null) {
throw new NullPointerException("aListArg unexpectedly null.");
}
Result<List<Object>> resultCallback =
new Result<List<Object>>() {
public void success(List<Object> result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoList(aListArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoMap",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
Map<String, Object> aMapArg = (Map<String, Object>) args.get(0);
if (aMapArg == null) {
throw new NullPointerException("aMapArg unexpectedly null.");
}
Result<Map<String, Object>> resultCallback =
new Result<Map<String, Object>>() {
public void success(Map<String, Object> result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoMap(aMapArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableBool",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
Boolean aBoolArg = (Boolean) args.get(0);
Result<Boolean> resultCallback =
new Result<Boolean>() {
public void success(Boolean result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoNullableBool(aBoolArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableInt",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
Number anIntArg = (Number) args.get(0);
Result<Long> resultCallback =
new Result<Long>() {
public void success(Long result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoNullableInt(
(anIntArg == null) ? null : anIntArg.longValue(), resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableDouble",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
Double aDoubleArg = (Double) args.get(0);
Result<Double> resultCallback =
new Result<Double>() {
public void success(Double result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoNullableDouble(aDoubleArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableString",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
String aStringArg = (String) args.get(0);
Result<String> resultCallback =
new Result<String>() {
public void success(String result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoNullableString(aStringArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableUint8List",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
byte[] aListArg = (byte[]) args.get(0);
Result<byte[]> resultCallback =
new Result<byte[]>() {
public void success(byte[] result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoNullableUint8List(aListArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableList",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
List<Object> aListArg = (List<Object>) args.get(0);
Result<List<Object>> resultCallback =
new Result<List<Object>>() {
public void success(List<Object> result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoNullableList(aListArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableMap",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList wrapped = new ArrayList<>();
try {
ArrayList<Object> args = (ArrayList<Object>) message;
assert args != null;
Map<String, Object> aMapArg = (Map<String, Object>) args.get(0);
Result<Map<String, Object>> resultCallback =
new Result<Map<String, Object>>() {
public void success(Map<String, Object> result) {
wrapped.add(0, result);
reply.reply(wrapped);
}
public void error(Throwable error) {
ArrayList<Object> wrappedError = wrapError(error);
reply.reply(wrappedError);
}
};
api.callFlutterEchoNullableMap(aMapArg, resultCallback);
} catch (Error | RuntimeException exception) {
ArrayList<Object> wrappedError = wrapError(exception);
reply.reply(wrappedError);
}
});
} else {
channel.setMessageHandler(null);
}
}
}
}
@ -1823,7 +2442,7 @@ public class CoreTests {
}
/** Returns the passed map, to test serialization and deserialization. */
public void echoNullableMap(
@NonNull Map<String, Object> aMapArg, Reply<Map<String, Object>> callback) {
@Nullable Map<String, Object> aMapArg, Reply<Map<String, Object>> callback) {
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger,

View File

@ -138,6 +138,51 @@
}];
}
- (void)callFlutterEchoAllTypes:(AllTypes *)everything
completion:(void (^)(AllTypes *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoAllTypes:everything
completion:^(AllTypes *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterSendMultipleNullableTypesABool:(nullable NSNumber *)aNullableBool
anInt:(nullable NSNumber *)aNullableInt
aString:(nullable NSString *)aNullableString
completion:(void (^)(AllNullableTypes *_Nullable,
FlutterError *_Nullable))completion {
[self.flutterAPI sendMultipleNullableTypesABool:aNullableBool
anInt:aNullableInt
aString:aNullableString
completion:^(AllNullableTypes *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoBool:(NSNumber *)aBool
completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoBool:aBool
completion:^(NSNumber *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoInt:(NSNumber *)anInt
completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoInt:anInt
completion:^(NSNumber *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoDouble:(NSNumber *)aDouble
completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoDouble:aDouble
completion:^(NSNumber *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoString:(NSString *)aString
completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoString:aString
@ -146,4 +191,93 @@
}];
}
- (void)callFlutterEchoUint8List:(FlutterStandardTypedData *)aList
completion:(void (^)(FlutterStandardTypedData *_Nullable,
FlutterError *_Nullable))completion {
[self.flutterAPI echoUint8List:aList
completion:^(FlutterStandardTypedData *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoList:(NSArray<id> *)aList
completion:(void (^)(NSArray<id> *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoList:aList
completion:^(NSArray<id> *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoMap:(NSDictionary<NSString *, id> *)aMap
completion:(void (^)(NSDictionary<NSString *, id> *_Nullable,
FlutterError *_Nullable))completion {
[self.flutterAPI echoMap:aMap
completion:^(NSDictionary<NSString *, id> *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoNullableBool:(nullable NSNumber *)aBool
completion:
(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoNullableBool:aBool
completion:^(NSNumber *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoNullableInt:(nullable NSNumber *)anInt
completion:
(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoNullableInt:anInt
completion:^(NSNumber *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoNullableDouble:(nullable NSNumber *)aDouble
completion:
(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoNullableDouble:aDouble
completion:^(NSNumber *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoNullableString:(nullable NSString *)aString
completion:
(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoNullableString:aString
completion:^(NSString *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoNullableUint8List:(nullable FlutterStandardTypedData *)aList
completion:(void (^)(FlutterStandardTypedData *_Nullable,
FlutterError *_Nullable))completion {
[self.flutterAPI echoNullableUint8List:aList
completion:^(FlutterStandardTypedData *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoNullableList:(nullable NSArray<id> *)aList
completion:
(void (^)(NSArray<id> *_Nullable, FlutterError *_Nullable))completion {
[self.flutterAPI echoNullableList:aList
completion:^(NSArray<id> *value, NSError *error) {
completion(value, error);
}];
}
- (void)callFlutterEchoNullableMap:(nullable NSDictionary<NSString *, id> *)aMap
completion:(void (^)(NSDictionary<NSString *, id> *_Nullable,
FlutterError *_Nullable))completion {
[self.flutterAPI echoNullableMap:aMap
completion:^(NSDictionary<NSString *, id> *value, NSError *error) {
completion(value, error);
}];
}
@end

View File

@ -182,8 +182,50 @@ NSObject<FlutterMessageCodec> *HostIntegrationCoreApiGetCodec(void);
- (void)echoAsyncString:(NSString *)aString
completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterNoopWithCompletion:(void (^)(FlutterError *_Nullable))completion;
- (void)callFlutterEchoAllTypes:(AllTypes *)everything
completion:(void (^)(AllTypes *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterSendMultipleNullableTypesABool:(nullable NSNumber *)aNullableBool
anInt:(nullable NSNumber *)aNullableInt
aString:(nullable NSString *)aNullableString
completion:(void (^)(AllNullableTypes *_Nullable,
FlutterError *_Nullable))completion;
- (void)callFlutterEchoBool:(NSNumber *)aBool
completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoInt:(NSNumber *)anInt
completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoDouble:(NSNumber *)aDouble
completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoString:(NSString *)aString
completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoUint8List:(FlutterStandardTypedData *)aList
completion:(void (^)(FlutterStandardTypedData *_Nullable,
FlutterError *_Nullable))completion;
- (void)callFlutterEchoList:(NSArray<id> *)aList
completion:(void (^)(NSArray<id> *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoMap:(NSDictionary<NSString *, id> *)aMap
completion:(void (^)(NSDictionary<NSString *, id> *_Nullable,
FlutterError *_Nullable))completion;
- (void)callFlutterEchoNullableBool:(nullable NSNumber *)aBool
completion:
(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoNullableInt:(nullable NSNumber *)anInt
completion:
(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoNullableDouble:(nullable NSNumber *)aDouble
completion:
(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoNullableString:(nullable NSString *)aString
completion:
(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoNullableUint8List:(nullable FlutterStandardTypedData *)aList
completion:(void (^)(FlutterStandardTypedData *_Nullable,
FlutterError *_Nullable))completion;
- (void)callFlutterEchoNullableList:(nullable NSArray<id> *)aList
completion:
(void (^)(NSArray<id> *_Nullable, FlutterError *_Nullable))completion;
- (void)callFlutterEchoNullableMap:(nullable NSDictionary<NSString *, id> *)aMap
completion:(void (^)(NSDictionary<NSString *, id> *_Nullable,
FlutterError *_Nullable))completion;
@end
extern void HostIntegrationCoreApiSetup(id<FlutterBinaryMessenger> binaryMessenger,
@ -254,7 +296,7 @@ NSObject<FlutterMessageCodec> *FlutterIntegrationCoreApiGetCodec(void);
- (void)echoNullableList:(nullable NSArray<id> *)aList
completion:(void (^)(NSArray<id> *_Nullable, NSError *_Nullable))completion;
/// Returns the passed map, to test serialization and deserialization.
- (void)echoNullableMap:(NSDictionary<NSString *, id> *)aMap
- (void)echoNullableMap:(nullable NSDictionary<NSString *, id> *)aMap
completion:
(void (^)(NSDictionary<NSString *, id> *_Nullable, NSError *_Nullable))completion;
@end

View File

@ -759,6 +759,123 @@ void HostIntegrationCoreApiSetup(id<FlutterBinaryMessenger> binaryMessenger,
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoAllTypes"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoAllTypes:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoAllTypes:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
AllTypes *arg_everything = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoAllTypes:arg_everything
completion:^(AllTypes *_Nullable output, FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:
@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterSendMultipleNullableTypes"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector
(callFlutterSendMultipleNullableTypesABool:anInt:aString:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterSendMultipleNullableTypesABool:anInt:aString:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_aNullableBool = GetNullableObjectAtIndex(args, 0);
NSNumber *arg_aNullableInt = GetNullableObjectAtIndex(args, 1);
NSString *arg_aNullableString = GetNullableObjectAtIndex(args, 2);
[api callFlutterSendMultipleNullableTypesABool:arg_aNullableBool
anInt:arg_aNullableInt
aString:arg_aNullableString
completion:^(AllNullableTypes *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoBool"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoBool:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoBool:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_aBool = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoBool:arg_aBool
completion:^(NSNumber *_Nullable output, FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoInt"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoInt:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoInt:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_anInt = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoInt:arg_anInt
completion:^(NSNumber *_Nullable output, FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoDouble"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoDouble:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoDouble:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_aDouble = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoDouble:arg_aDouble
completion:^(NSNumber *_Nullable output, FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoString"
@ -781,6 +898,236 @@ void HostIntegrationCoreApiSetup(id<FlutterBinaryMessenger> binaryMessenger,
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoUint8List"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoUint8List:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoUint8List:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
FlutterStandardTypedData *arg_aList = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoUint8List:arg_aList
completion:^(FlutterStandardTypedData *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoList"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoList:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoList:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSArray<id> *arg_aList = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoList:arg_aList
completion:^(NSArray<id> *_Nullable output, FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoMap"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoMap:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoMap:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSDictionary<NSString *, id> *arg_aMap = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoMap:arg_aMap
completion:^(NSDictionary<NSString *, id> *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableBool"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoNullableBool:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoNullableBool:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_aBool = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoNullableBool:arg_aBool
completion:^(NSNumber *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableInt"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoNullableInt:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoNullableInt:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_anInt = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoNullableInt:arg_anInt
completion:^(NSNumber *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableDouble"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoNullableDouble:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoNullableDouble:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_aDouble = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoNullableDouble:arg_aDouble
completion:^(NSNumber *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableString"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoNullableString:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoNullableString:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSString *arg_aString = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoNullableString:arg_aString
completion:^(NSString *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:
@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableUint8List"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoNullableUint8List:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoNullableUint8List:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
FlutterStandardTypedData *arg_aList = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoNullableUint8List:arg_aList
completion:^(FlutterStandardTypedData *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableList"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoNullableList:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoNullableList:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSArray<id> *arg_aList = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoNullableList:arg_aList
completion:^(NSArray<id> *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableMap"
binaryMessenger:binaryMessenger
codec:HostIntegrationCoreApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(callFlutterEchoNullableMap:completion:)],
@"HostIntegrationCoreApi api (%@) doesn't respond to "
@"@selector(callFlutterEchoNullableMap:completion:)",
api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSDictionary<NSString *, id> *arg_aMap = GetNullableObjectAtIndex(args, 0);
[api callFlutterEchoNullableMap:arg_aMap
completion:^(NSDictionary<NSString *, id> *_Nullable output,
FlutterError *_Nullable error) {
callback(wrapResult(output, error));
}];
}];
} else {
[channel setMessageHandler:nil];
}
}
}
@interface FlutterIntegrationCoreApiCodecReader : FlutterStandardReader
@end
@ -1067,7 +1414,7 @@ NSObject<FlutterMessageCodec> *FlutterIntegrationCoreApiGetCodec() {
completion(output, nil);
}];
}
- (void)echoNullableMap:(NSDictionary<NSString *, id> *)arg_aMap
- (void)echoNullableMap:(nullable NSDictionary<NSString *, id> *)arg_aMap
completion:
(void (^)(NSDictionary<NSString *, id> *_Nullable, NSError *_Nullable))completion {
FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel

View File

@ -97,21 +97,11 @@ void runPigeonIntegrationTests(TargetGenerator targetGenerator) {
expect(echoObject.aFloatArray, genericAllTypes.aFloatArray);
expect(listEquals(echoObject.aList, genericAllTypes.aList), true);
expect(mapEquals(echoObject.aMap, genericAllTypes.aMap), true);
// TODO(stuartmorgan): Enable this once the Dart types are fixed; see
// https://github.com/flutter/flutter/issues/116117
// expect(echoObject.nestedList.length, genericAllTypes.nestedList.length);
//for (int i = 0; i < echoObject.nestedList!.length; i++) {
// expect(listEquals(echoObject.nestedList![i], genericAllTypes.nestedList![i]),
// true);
//}
// expect(
// mapEquals(
// echoObject.mapWithAnnotations, genericAllTypes.mapWithAnnotations),
// true);
// expect(
// mapEquals(echoObject.mapWithObject, genericAllTypes.mapWithObject), true);
expect(echoObject.anEnum, genericAllTypes.anEnum);
});
},
// TODO(stuartmorgan): Fix and re-enable.
// See https://github.com/flutter/flutter/issues/118726
skip: targetGenerator == TargetGenerator.kotlin);
testWidgets('all nullable datatypes serialize and deserialize correctly',
(WidgetTester _) async {
@ -160,7 +150,7 @@ void runPigeonIntegrationTests(TargetGenerator targetGenerator) {
expect(echoObject?.aNullableEnum, genericAllNullableTypes.aNullableEnum);
});
testWidgets('all nulla datatypes serialize and deserialize correctly',
testWidgets('all null datatypes serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
@ -233,7 +223,10 @@ void runPigeonIntegrationTests(TargetGenerator targetGenerator) {
expect(echoNullFilledObject?.aNullableEnum, allTypesNull.aNullableEnum);
expect(echoNullFilledObject?.aNullableEnum, null);
});
},
// TODO(stuartmorgan): Fix and re-enable.
// See https://github.com/flutter/flutter/issues/118733
skip: targetGenerator == TargetGenerator.objc);
testWidgets('errors are returned correctly', (WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
@ -518,15 +511,294 @@ void runPigeonIntegrationTests(TargetGenerator targetGenerator) {
expect(api.callFlutterNoop(), completes);
});
testWidgets('all datatypes serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final AllTypes echoObject =
await api.callFlutterEchoAllTypes(genericAllTypes);
expect(echoObject.aBool, genericAllTypes.aBool);
expect(echoObject.anInt, genericAllTypes.anInt);
expect(echoObject.aDouble, genericAllTypes.aDouble);
expect(echoObject.aString, genericAllTypes.aString);
expect(echoObject.aByteArray, genericAllTypes.aByteArray);
expect(echoObject.a4ByteArray, genericAllTypes.a4ByteArray);
expect(echoObject.a8ByteArray, genericAllTypes.a8ByteArray);
expect(echoObject.aFloatArray, genericAllTypes.aFloatArray);
expect(listEquals(echoObject.aList, genericAllTypes.aList), true);
expect(mapEquals(echoObject.aMap, genericAllTypes.aMap), true);
expect(echoObject.anEnum, genericAllTypes.anEnum);
},
// TODO(stuartmorgan): Fix and re-enable.
// See https://github.com/flutter/flutter/issues/118726
skip: targetGenerator == TargetGenerator.kotlin ||
// TODO(stuartmorgan): Fix and re-enable.
// See https://github.com/flutter/flutter/issues/118739
targetGenerator == TargetGenerator.cpp);
testWidgets(
'Arguments of multiple types serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const String aNullableString = 'this is a String';
const bool aNullableBool = false;
const int aNullableInt = 42;
final AllNullableTypes compositeObject =
await api.callFlutterSendMultipleNullableTypes(
aNullableBool, aNullableInt, aNullableString);
expect(compositeObject.aNullableInt, aNullableInt);
expect(compositeObject.aNullableBool, aNullableBool);
expect(compositeObject.aNullableString, aNullableString);
});
testWidgets(
'Arguments of multiple null types serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final AllNullableTypes compositeObject =
await api.callFlutterSendMultipleNullableTypes(null, null, null);
expect(compositeObject.aNullableInt, null);
expect(compositeObject.aNullableBool, null);
expect(compositeObject.aNullableString, null);
});
testWidgets('booleans serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
for (final bool sentObject in <bool>[true, false]) {
final bool echoObject = await api.callFlutterEchoBool(sentObject);
expect(echoObject, sentObject);
}
});
testWidgets('ints serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const int sentObject = -13;
final int echoObject = await api.callFlutterEchoInt(sentObject);
expect(echoObject, sentObject);
},
// TODO(stuartmorgan): Fix and re-enable.
// See https://github.com/flutter/flutter/issues/118726
skip: targetGenerator == TargetGenerator.kotlin);
testWidgets('doubles serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const double sentObject = 2.0694;
final double echoObject = await api.callFlutterEchoDouble(sentObject);
expect(echoObject, sentObject);
});
testWidgets('strings serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const String sentObject = 'Hello Dart!';
final String echoObject = await api.callFlutterEchoString(sentObject);
expect(echoObject, sentObject);
});
testWidgets('Uint8Lists serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final List<int> data = <int>[
102,
111,
114,
116,
121,
45,
116,
119,
111,
0
];
final Uint8List sentObject = Uint8List.fromList(data);
final Uint8List echoObject =
await api.callFlutterEchoUint8List(sentObject);
expect(echoObject, sentObject);
});
testWidgets('lists serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const List<Object?> sentObject = <Object>[7, 'Hello Dart!'];
final List<Object?> echoObject =
await api.callFlutterEchoList(sentObject);
expect(listEquals(echoObject, sentObject), true);
});
testWidgets('maps serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const Map<String?, Object?> sentObject = <String?, Object?>{
'a': 1,
'b': 2.3,
'c': 'four',
};
final Map<String?, Object?> echoObject =
await api.callFlutterEchoMap(sentObject);
expect(mapEquals(echoObject, sentObject), true);
});
testWidgets('nullable booleans serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
for (final bool? sentObject in <bool?>[true, false]) {
final bool? echoObject =
await api.callFlutterEchoNullableBool(sentObject);
expect(echoObject, sentObject);
}
});
testWidgets('null booleans serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const bool? sentObject = null;
final bool? echoObject =
await api.callFlutterEchoNullableBool(sentObject);
expect(echoObject, sentObject);
});
testWidgets('nullable ints serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const int sentObject = -13;
final int? echoObject = await api.callFlutterEchoNullableInt(sentObject);
expect(echoObject, sentObject);
},
// TODO(stuartmorgan): Fix and re-enable.
// See https://github.com/flutter/flutter/issues/118726
skip: targetGenerator == TargetGenerator.kotlin);
testWidgets('null ints serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final int? echoObject = await api.callFlutterEchoNullableInt(null);
expect(echoObject, null);
});
testWidgets('nullable doubles serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const double sentObject = 2.0694;
final double? echoObject =
await api.callFlutterEchoNullableDouble(sentObject);
expect(echoObject, sentObject);
});
testWidgets('null doubles serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final double? echoObject = await api.callFlutterEchoNullableDouble(null);
expect(echoObject, null);
});
testWidgets('nullable strings serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const String sentObject = "I'm a computer";
final String? echoObject =
await api.callFlutterEchoNullableString(sentObject);
expect(echoObject, sentObject);
});
testWidgets('null strings serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final String? echoObject = await api.callFlutterEchoNullableString(null);
expect(echoObject, null);
});
testWidgets('nullable Uint8Lists serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final List<int> data = <int>[
102,
111,
114,
116,
121,
45,
116,
119,
111,
0
];
final Uint8List sentObject = Uint8List.fromList(data);
final Uint8List? echoObject =
await api.callFlutterEchoNullableUint8List(sentObject);
expect(echoObject, sentObject);
});
testWidgets('null Uint8Lists serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final Uint8List? echoObject =
await api.callFlutterEchoNullableUint8List(null);
expect(echoObject, null);
});
testWidgets('nullable lists serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const List<Object?> sentObject = <Object>[7, 'Hello Dart!'];
final List<Object?>? echoObject =
await api.callFlutterEchoNullableList(sentObject);
expect(listEquals(echoObject, sentObject), true);
});
testWidgets('null lists serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final List<Object?>? echoObject =
await api.callFlutterEchoNullableList(null);
expect(listEquals(echoObject, null), true);
});
testWidgets('nullable maps serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
const Map<String?, Object?> sentObject = <String?, Object?>{
'a': 1,
'b': 2.3,
'c': 'four',
};
final Map<String?, Object?>? echoObject =
await api.callFlutterEchoNullableMap(sentObject);
expect(mapEquals(echoObject, sentObject), true);
});
testWidgets('null maps serialize and deserialize correctly',
(WidgetTester _) async {
final HostIntegrationCoreApi api = HostIntegrationCoreApi();
final Map<String?, Object?>? echoObject =
await api.callFlutterEchoNullableMap(null);
expect(mapEquals(echoObject, null), true);
});
});
}
@ -587,7 +859,7 @@ class _FlutterApiTestImplementation implements FlutterIntegrationCoreApi {
List<Object?>? echoNullableList(List<Object?>? aList) => aList;
@override
Map<String?, Object?> echoNullableMap(Map<String?, Object?> aMap) => aMap;
Map<String?, Object?>? echoNullableMap(Map<String?, Object?>? aMap) => aMap;
@override
String? echoNullableString(String? aString) => aString;

View File

@ -812,6 +812,148 @@ class HostIntegrationCoreApi {
}
}
Future<AllTypes> callFlutterEchoAllTypes(AllTypes arg_everything) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoAllTypes',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_everything]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else if (replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (replyList[0] as AllTypes?)!;
}
}
Future<AllNullableTypes> callFlutterSendMultipleNullableTypes(
bool? arg_aNullableBool,
int? arg_aNullableInt,
String? arg_aNullableString) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterSendMultipleNullableTypes',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList = await channel.send(
<Object?>[arg_aNullableBool, arg_aNullableInt, arg_aNullableString])
as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else if (replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (replyList[0] as AllNullableTypes?)!;
}
}
Future<bool> callFlutterEchoBool(bool arg_aBool) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoBool', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aBool]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else if (replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (replyList[0] as bool?)!;
}
}
Future<int> callFlutterEchoInt(int arg_anInt) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoInt', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_anInt]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else if (replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (replyList[0] as int?)!;
}
}
Future<double> callFlutterEchoDouble(double arg_aDouble) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoDouble',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aDouble]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else if (replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (replyList[0] as double?)!;
}
}
Future<String> callFlutterEchoString(String arg_aString) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoString',
@ -839,6 +981,253 @@ class HostIntegrationCoreApi {
return (replyList[0] as String?)!;
}
}
Future<Uint8List> callFlutterEchoUint8List(Uint8List arg_aList) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoUint8List',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aList]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else if (replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (replyList[0] as Uint8List?)!;
}
}
Future<List<Object?>> callFlutterEchoList(List<Object?> arg_aList) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoList', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aList]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else if (replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (replyList[0] as List<Object?>?)!.cast<Object?>();
}
}
Future<Map<String?, Object?>> callFlutterEchoMap(
Map<String?, Object?> arg_aMap) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoMap', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aMap]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else if (replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (replyList[0] as Map<Object?, Object?>?)!.cast<String?, Object?>();
}
}
Future<bool?> callFlutterEchoNullableBool(bool? arg_aBool) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableBool',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aBool]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return (replyList[0] as bool?);
}
}
Future<int?> callFlutterEchoNullableInt(int? arg_anInt) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableInt',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_anInt]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return (replyList[0] as int?);
}
}
Future<double?> callFlutterEchoNullableDouble(double? arg_aDouble) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableDouble',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aDouble]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return (replyList[0] as double?);
}
}
Future<String?> callFlutterEchoNullableString(String? arg_aString) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableString',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aString]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return (replyList[0] as String?);
}
}
Future<Uint8List?> callFlutterEchoNullableUint8List(
Uint8List? arg_aList) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableUint8List',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aList]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return (replyList[0] as Uint8List?);
}
}
Future<List<Object?>?> callFlutterEchoNullableList(
List<Object?>? arg_aList) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableList',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aList]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return (replyList[0] as List<Object?>?)?.cast<Object?>();
}
}
Future<Map<String?, Object?>?> callFlutterEchoNullableMap(
Map<String?, Object?>? arg_aMap) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableMap',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_aMap]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return (replyList[0] as Map<Object?, Object?>?)?.cast<String?, Object?>();
}
}
}
class _FlutterIntegrationCoreApiCodec extends StandardMessageCodec {
@ -938,7 +1327,7 @@ abstract class FlutterIntegrationCoreApi {
List<Object?>? echoNullableList(List<Object?>? aList);
/// Returns the passed map, to test serialization and deserialization.
Map<String?, Object?> echoNullableMap(Map<String?, Object?> aMap);
Map<String?, Object?>? echoNullableMap(Map<String?, Object?>? aMap);
static void setup(FlutterIntegrationCoreApi? api,
{BinaryMessenger? binaryMessenger}) {
@ -1274,9 +1663,7 @@ abstract class FlutterIntegrationCoreApi {
final List<Object?> args = (message as List<Object?>?)!;
final Map<String?, Object?>? arg_aMap =
(args[0] as Map<Object?, Object?>?)?.cast<String?, Object?>();
assert(arg_aMap != null,
'Argument for dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap was null, expected non-null Map<String?, Object?>.');
final Map<String?, Object?> output = api.echoNullableMap(arg_aMap!);
final Map<String?, Object?>? output = api.echoNullableMap(arg_aMap);
return output;
});
}

View File

@ -270,7 +270,22 @@ interface HostIntegrationCoreApi {
/** Returns the passed string asynchronously. */
fun echoAsyncString(aString: String, callback: (String) -> Unit)
fun callFlutterNoop(callback: () -> Unit)
fun callFlutterEchoAllTypes(everything: AllTypes, callback: (AllTypes) -> Unit)
fun callFlutterSendMultipleNullableTypes(aNullableBool: Boolean?, aNullableInt: Long?, aNullableString: String?, callback: (AllNullableTypes) -> Unit)
fun callFlutterEchoBool(aBool: Boolean, callback: (Boolean) -> Unit)
fun callFlutterEchoInt(anInt: Long, callback: (Long) -> Unit)
fun callFlutterEchoDouble(aDouble: Double, callback: (Double) -> Unit)
fun callFlutterEchoString(aString: String, callback: (String) -> Unit)
fun callFlutterEchoUint8List(aList: ByteArray, callback: (ByteArray) -> Unit)
fun callFlutterEchoList(aList: List<Any?>, callback: (List<Any?>) -> Unit)
fun callFlutterEchoMap(aMap: Map<String?, Any?>, callback: (Map<String?, Any?>) -> Unit)
fun callFlutterEchoNullableBool(aBool: Boolean?, callback: (Boolean?) -> Unit)
fun callFlutterEchoNullableInt(anInt: Long?, callback: (Long?) -> Unit)
fun callFlutterEchoNullableDouble(aDouble: Double?, callback: (Double?) -> Unit)
fun callFlutterEchoNullableString(aString: String?, callback: (String?) -> Unit)
fun callFlutterEchoNullableUint8List(aList: ByteArray?, callback: (ByteArray?) -> Unit)
fun callFlutterEchoNullableList(aList: List<Any?>?, callback: (List<Any?>?) -> Unit)
fun callFlutterEchoNullableMap(aMap: Map<String?, Any?>?, callback: (Map<String?, Any?>?) -> Unit)
companion object {
/** The codec used by HostIntegrationCoreApi. */
@ -678,6 +693,108 @@ interface HostIntegrationCoreApi {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoAllTypes", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val everythingArg = args[0] as AllTypes
api.callFlutterEchoAllTypes(everythingArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterSendMultipleNullableTypes", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aNullableBoolArg = args[0] as? Boolean
val aNullableIntArg = args[1].let { if (it is Int) it.toLong() else it as? Long }
val aNullableStringArg = args[2] as? String
api.callFlutterSendMultipleNullableTypes(aNullableBoolArg, aNullableIntArg, aNullableStringArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoBool", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aBoolArg = args[0] as Boolean
api.callFlutterEchoBool(aBoolArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoInt", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val anIntArg = args[0].let { if (it is Int) it.toLong() else it as Long }
api.callFlutterEchoInt(anIntArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoDouble", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aDoubleArg = args[0] as Double
api.callFlutterEchoDouble(aDoubleArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoString", codec)
if (api != null) {
@ -698,6 +815,206 @@ interface HostIntegrationCoreApi {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoUint8List", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aListArg = args[0] as ByteArray
api.callFlutterEchoUint8List(aListArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoList", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aListArg = args[0] as List<Any?>
api.callFlutterEchoList(aListArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoMap", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aMapArg = args[0] as Map<String?, Any?>
api.callFlutterEchoMap(aMapArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableBool", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aBoolArg = args[0] as? Boolean
api.callFlutterEchoNullableBool(aBoolArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableInt", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val anIntArg = args[0].let { if (it is Int) it.toLong() else it as? Long }
api.callFlutterEchoNullableInt(anIntArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableDouble", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aDoubleArg = args[0] as? Double
api.callFlutterEchoNullableDouble(aDoubleArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableString", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aStringArg = args[0] as? String
api.callFlutterEchoNullableString(aStringArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableUint8List", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aListArg = args[0] as? ByteArray
api.callFlutterEchoNullableUint8List(aListArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableList", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aListArg = args[0] as? List<Any?>
api.callFlutterEchoNullableList(aListArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableMap", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
var wrapped = listOf<Any?>()
try {
val args = message as List<Any?>
val aMapArg = args[0] as? Map<String?, Any?>
api.callFlutterEchoNullableMap(aMapArg) {
reply.reply(wrapResult(it))
}
} catch (exception: Error) {
wrapped = wrapError(exception)
reply.reply(wrapped)
}
}
} else {
channel.setMessageHandler(null)
}
}
}
}
}
@ -899,10 +1216,10 @@ class FlutterIntegrationCoreApi(private val binaryMessenger: BinaryMessenger) {
}
}
/** Returns the passed map, to test serialization and deserialization. */
fun echoNullableMap(aMapArg: Map<String?, Any?>, callback: (Map<String?, Any?>) -> Unit) {
fun echoNullableMap(aMapArg: Map<String?, Any?>?, callback: (Map<String?, Any?>?) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", codec)
channel.send(listOf(aMapArg)) {
val result = it as Map<String?, Any?>
val result = it as? Map<String?, Any?>?
callback(result)
}
}

View File

@ -116,7 +116,75 @@ class TestPlugin: FlutterPlugin, HostIntegrationCoreApi {
flutterApi!!.noop() { callback() }
}
override fun callFlutterEchoString(aString: String, callback: (String) -> Unit) {
flutterApi!!.echoString(aString) { flutterString -> callback(flutterString) }
override fun callFlutterEchoAllTypes(everything: AllTypes, callback: (AllTypes) -> Unit) {
flutterApi!!.echoAllTypes(everything) { echo -> callback(echo) }
}
override fun callFlutterSendMultipleNullableTypes(
aNullableBool: Boolean?,
aNullableInt: Long?,
aNullableString: String?,
callback: (AllNullableTypes) -> Unit
) {
flutterApi!!.sendMultipleNullableTypes(aNullableBool, aNullableInt, aNullableString) {
echo -> callback(echo)
}
}
override fun callFlutterEchoBool(aBool: Boolean, callback: (Boolean) -> Unit) {
flutterApi!!.echoBool(aBool) { echo -> callback(echo) }
}
override fun callFlutterEchoInt(anInt: Long, callback: (Long) -> Unit) {
flutterApi!!.echoInt(anInt) { echo -> callback(echo) }
}
override fun callFlutterEchoDouble(aDouble: Double, callback: (Double) -> Unit) {
flutterApi!!.echoDouble(aDouble) { echo -> callback(echo) }
}
override fun callFlutterEchoString(aString: String, callback: (String) -> Unit) {
flutterApi!!.echoString(aString) { echo -> callback(echo) }
}
override fun callFlutterEchoUint8List(aList: ByteArray, callback: (ByteArray) -> Unit) {
flutterApi!!.echoUint8List(aList) { echo -> callback(echo) }
}
override fun callFlutterEchoList(aList: List<Any?>, callback: (List<Any?>) -> Unit) {
flutterApi!!.echoList(aList) { echo -> callback(echo) }
}
override fun callFlutterEchoMap(aMap: Map<String?, Any?>, callback: (Map<String?, Any?>) -> Unit) {
flutterApi!!.echoMap(aMap) { echo -> callback(echo) }
}
override fun callFlutterEchoNullableBool(aBool: Boolean?, callback: (Boolean?) -> Unit) {
flutterApi!!.echoNullableBool(aBool) { echo -> callback(echo) }
}
override fun callFlutterEchoNullableInt(anInt: Long?, callback: (Long?) -> Unit) {
flutterApi!!.echoNullableInt(anInt) { echo -> callback(echo) }
}
override fun callFlutterEchoNullableDouble(aDouble: Double?, callback: (Double?) -> Unit) {
flutterApi!!.echoNullableDouble(aDouble) { echo -> callback(echo) }
}
override fun callFlutterEchoNullableString(aString: String?, callback: (String?) -> Unit) {
flutterApi!!.echoNullableString(aString) { echo -> callback(echo) }
}
override fun callFlutterEchoNullableUint8List(aList: ByteArray?, callback: (ByteArray?) -> Unit) {
flutterApi!!.echoNullableUint8List(aList) { echo -> callback(echo) }
}
override fun callFlutterEchoNullableList(aList: List<Any?>?, callback: (List<Any?>?) -> Unit) {
flutterApi!!.echoNullableList(aList) { echo -> callback(echo) }
}
override fun callFlutterEchoNullableMap(aMap: Map<String?, Any?>?, callback: (Map<String?, Any?>?) -> Unit) {
flutterApi!!.echoNullableMap(aMap) { echo -> callback(echo) }
}
}

View File

@ -281,7 +281,22 @@ protocol HostIntegrationCoreApi {
/// Returns the passed string asynchronously.
func echoAsyncString(aString: String, completion: @escaping (String) -> Void)
func callFlutterNoop(completion: @escaping () -> Void)
func callFlutterEchoAllTypes(everything: AllTypes, completion: @escaping (AllTypes) -> Void)
func callFlutterSendMultipleNullableTypes(aNullableBool: Bool?, aNullableInt: Int32?, aNullableString: String?, completion: @escaping (AllNullableTypes) -> Void)
func callFlutterEchoBool(aBool: Bool, completion: @escaping (Bool) -> Void)
func callFlutterEchoInt(anInt: Int32, completion: @escaping (Int32) -> Void)
func callFlutterEchoDouble(aDouble: Double, completion: @escaping (Double) -> Void)
func callFlutterEchoString(aString: String, completion: @escaping (String) -> Void)
func callFlutterEchoUint8List(aList: FlutterStandardTypedData, completion: @escaping (FlutterStandardTypedData) -> Void)
func callFlutterEchoList(aList: [Any?], completion: @escaping ([Any?]) -> Void)
func callFlutterEchoMap(aMap: [String?: Any?], completion: @escaping ([String?: Any?]) -> Void)
func callFlutterEchoNullableBool(aBool: Bool?, completion: @escaping (Bool?) -> Void)
func callFlutterEchoNullableInt(anInt: Int32?, completion: @escaping (Int32?) -> Void)
func callFlutterEchoNullableDouble(aDouble: Double?, completion: @escaping (Double?) -> Void)
func callFlutterEchoNullableString(aString: String?, completion: @escaping (String?) -> Void)
func callFlutterEchoNullableUint8List(aList: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void)
func callFlutterEchoNullableList(aList: [Any?]?, completion: @escaping ([Any?]?) -> Void)
func callFlutterEchoNullableMap(aMap: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void)
}
/// Generated setup class from Pigeon to handle messages through the `binaryMessenger`.
@ -554,6 +569,68 @@ class HostIntegrationCoreApiSetup {
} else {
callFlutterNoopChannel.setMessageHandler(nil)
}
let callFlutterEchoAllTypesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoAllTypes", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoAllTypesChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let everythingArg = args[0] as! AllTypes
api.callFlutterEchoAllTypes(everything: everythingArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoAllTypesChannel.setMessageHandler(nil)
}
let callFlutterSendMultipleNullableTypesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterSendMultipleNullableTypes", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aNullableBoolArg = args[0] as? Bool
let aNullableIntArg = args[1] as? Int32
let aNullableStringArg = args[2] as? String
api.callFlutterSendMultipleNullableTypes(aNullableBool: aNullableBoolArg, aNullableInt: aNullableIntArg, aNullableString: aNullableStringArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterSendMultipleNullableTypesChannel.setMessageHandler(nil)
}
let callFlutterEchoBoolChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoBool", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoBoolChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aBoolArg = args[0] as! Bool
api.callFlutterEchoBool(aBool: aBoolArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoBoolChannel.setMessageHandler(nil)
}
let callFlutterEchoIntChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoInt", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoIntChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let anIntArg = args[0] as! Int32
api.callFlutterEchoInt(anInt: anIntArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoIntChannel.setMessageHandler(nil)
}
let callFlutterEchoDoubleChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoDouble", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoDoubleChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aDoubleArg = args[0] as! Double
api.callFlutterEchoDouble(aDouble: aDoubleArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoDoubleChannel.setMessageHandler(nil)
}
let callFlutterEchoStringChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoString", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoStringChannel.setMessageHandler { message, reply in
@ -566,6 +643,126 @@ class HostIntegrationCoreApiSetup {
} else {
callFlutterEchoStringChannel.setMessageHandler(nil)
}
let callFlutterEchoUint8ListChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoUint8List", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoUint8ListChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aListArg = args[0] as! FlutterStandardTypedData
api.callFlutterEchoUint8List(aList: aListArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoUint8ListChannel.setMessageHandler(nil)
}
let callFlutterEchoListChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoList", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoListChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aListArg = args[0] as! [Any?]
api.callFlutterEchoList(aList: aListArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoListChannel.setMessageHandler(nil)
}
let callFlutterEchoMapChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoMap", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoMapChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aMapArg = args[0] as! [String?: Any?]
api.callFlutterEchoMap(aMap: aMapArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoMapChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableBoolChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableBool", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aBoolArg = args[0] as? Bool
api.callFlutterEchoNullableBool(aBool: aBoolArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableBoolChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableIntChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableInt", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let anIntArg = args[0] as? Int32
api.callFlutterEchoNullableInt(anInt: anIntArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableIntChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableDoubleChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableDouble", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aDoubleArg = args[0] as? Double
api.callFlutterEchoNullableDouble(aDouble: aDoubleArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableDoubleChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableStringChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableString", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aStringArg = args[0] as? String
api.callFlutterEchoNullableString(aString: aStringArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableStringChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableUint8ListChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aListArg = args[0] as? FlutterStandardTypedData
api.callFlutterEchoNullableUint8List(aList: aListArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableUint8ListChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableListChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableList", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableListChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aListArg = args[0] as? [Any?]
api.callFlutterEchoNullableList(aList: aListArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableListChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableMapChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableMap", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aMapArg = args[0] as? [String?: Any?]
api.callFlutterEchoNullableMap(aMap: aMapArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableMapChannel.setMessageHandler(nil)
}
}
}
private class FlutterIntegrationCoreApiCodecReader: FlutterStandardReader {
@ -765,10 +962,10 @@ class FlutterIntegrationCoreApi {
}
}
/// Returns the passed map, to test serialization and deserialization.
func echoNullableMap(aMap aMapArg: [String?: Any?], completion: @escaping ([String?: Any?]) -> Void) {
func echoNullableMap(aMap aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) {
let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec)
channel.sendMessage([aMapArg] as [Any?]) { response in
let result = response as! [String?: Any?]
let result = response as? [String?: Any?]
completion(result)
}
}

View File

@ -114,9 +114,78 @@ public class TestPlugin: NSObject, FlutterPlugin, HostIntegrationCoreApi {
}
}
func callFlutterEchoString(aString: String, completion: @escaping (String) -> Void) {
flutterAPI.echoString(aString: aString) { flutterString in
completion(flutterString)
func callFlutterEchoAllTypes(everything: AllTypes, completion: @escaping (AllTypes) -> Void) {
flutterAPI.echoAllTypes(everything: everything) { completion($0) }
}
func callFlutterSendMultipleNullableTypes(
aNullableBool: Bool?,
aNullableInt: Int32?,
aNullableString: String?,
completion: @escaping (AllNullableTypes) -> Void
) {
flutterAPI.sendMultipleNullableTypes(
aNullableBool: aNullableBool,
aNullableInt: aNullableInt,
aNullableString: aNullableString
) {
completion($0)
}
}
func callFlutterEchoBool(aBool: Bool, completion: @escaping (Bool) -> Void) {
flutterAPI.echoBool(aBool: aBool) { completion($0) }
}
func callFlutterEchoInt(anInt: Int32, completion: @escaping (Int32) -> Void) {
flutterAPI.echoInt(anInt: anInt) { completion($0) }
}
func callFlutterEchoDouble(aDouble: Double, completion: @escaping (Double) -> Void) {
flutterAPI.echoDouble(aDouble: aDouble) { completion($0) }
}
func callFlutterEchoString(aString: String, completion: @escaping (String) -> Void) {
flutterAPI.echoString(aString: aString) { completion($0) }
}
func callFlutterEchoUint8List(aList: FlutterStandardTypedData, completion: @escaping (FlutterStandardTypedData) -> Void) {
flutterAPI.echoUint8List(aList: aList) { completion($0) }
}
func callFlutterEchoList(aList: [Any?], completion: @escaping ([Any?]) -> Void) {
flutterAPI.echoList(aList: aList) { completion($0) }
}
func callFlutterEchoMap(aMap: [String? : Any?], completion: @escaping ([String? : Any?]) -> Void) {
flutterAPI.echoMap(aMap: aMap) { completion($0) }
}
func callFlutterEchoNullableBool(aBool: Bool?, completion: @escaping (Bool?) -> Void) {
flutterAPI.echoNullableBool(aBool: aBool) { completion($0) }
}
func callFlutterEchoNullableInt(anInt: Int32?, completion: @escaping (Int32?) -> Void) {
flutterAPI.echoNullableInt(anInt: anInt) { completion($0) }
}
func callFlutterEchoNullableDouble(aDouble: Double?, completion: @escaping (Double?) -> Void) {
flutterAPI.echoNullableDouble(aDouble: aDouble) { completion($0) }
}
func callFlutterEchoNullableString(aString: String?, completion: @escaping (String?) -> Void) {
flutterAPI.echoNullableString(aString: aString) { completion($0) }
}
func callFlutterEchoNullableUint8List(aList: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) {
flutterAPI.echoNullableUint8List(aList: aList) { completion($0) }
}
func callFlutterEchoNullableList(aList: [Any?]?, completion: @escaping ([Any?]?) -> Void) {
flutterAPI.echoNullableList(aList: aList) { completion($0) }
}
func callFlutterEchoNullableMap(aMap: [String? : Any?]?, completion: @escaping ([String? : Any?]?) -> Void) {
flutterAPI.echoNullableMap(aMap: aMap) { completion($0) }
}
}

View File

@ -281,7 +281,22 @@ protocol HostIntegrationCoreApi {
/// Returns the passed string asynchronously.
func echoAsyncString(aString: String, completion: @escaping (String) -> Void)
func callFlutterNoop(completion: @escaping () -> Void)
func callFlutterEchoAllTypes(everything: AllTypes, completion: @escaping (AllTypes) -> Void)
func callFlutterSendMultipleNullableTypes(aNullableBool: Bool?, aNullableInt: Int32?, aNullableString: String?, completion: @escaping (AllNullableTypes) -> Void)
func callFlutterEchoBool(aBool: Bool, completion: @escaping (Bool) -> Void)
func callFlutterEchoInt(anInt: Int32, completion: @escaping (Int32) -> Void)
func callFlutterEchoDouble(aDouble: Double, completion: @escaping (Double) -> Void)
func callFlutterEchoString(aString: String, completion: @escaping (String) -> Void)
func callFlutterEchoUint8List(aList: FlutterStandardTypedData, completion: @escaping (FlutterStandardTypedData) -> Void)
func callFlutterEchoList(aList: [Any?], completion: @escaping ([Any?]) -> Void)
func callFlutterEchoMap(aMap: [String?: Any?], completion: @escaping ([String?: Any?]) -> Void)
func callFlutterEchoNullableBool(aBool: Bool?, completion: @escaping (Bool?) -> Void)
func callFlutterEchoNullableInt(anInt: Int32?, completion: @escaping (Int32?) -> Void)
func callFlutterEchoNullableDouble(aDouble: Double?, completion: @escaping (Double?) -> Void)
func callFlutterEchoNullableString(aString: String?, completion: @escaping (String?) -> Void)
func callFlutterEchoNullableUint8List(aList: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void)
func callFlutterEchoNullableList(aList: [Any?]?, completion: @escaping ([Any?]?) -> Void)
func callFlutterEchoNullableMap(aMap: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void)
}
/// Generated setup class from Pigeon to handle messages through the `binaryMessenger`.
@ -554,6 +569,68 @@ class HostIntegrationCoreApiSetup {
} else {
callFlutterNoopChannel.setMessageHandler(nil)
}
let callFlutterEchoAllTypesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoAllTypes", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoAllTypesChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let everythingArg = args[0] as! AllTypes
api.callFlutterEchoAllTypes(everything: everythingArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoAllTypesChannel.setMessageHandler(nil)
}
let callFlutterSendMultipleNullableTypesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterSendMultipleNullableTypes", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aNullableBoolArg = args[0] as? Bool
let aNullableIntArg = args[1] as? Int32
let aNullableStringArg = args[2] as? String
api.callFlutterSendMultipleNullableTypes(aNullableBool: aNullableBoolArg, aNullableInt: aNullableIntArg, aNullableString: aNullableStringArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterSendMultipleNullableTypesChannel.setMessageHandler(nil)
}
let callFlutterEchoBoolChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoBool", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoBoolChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aBoolArg = args[0] as! Bool
api.callFlutterEchoBool(aBool: aBoolArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoBoolChannel.setMessageHandler(nil)
}
let callFlutterEchoIntChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoInt", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoIntChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let anIntArg = args[0] as! Int32
api.callFlutterEchoInt(anInt: anIntArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoIntChannel.setMessageHandler(nil)
}
let callFlutterEchoDoubleChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoDouble", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoDoubleChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aDoubleArg = args[0] as! Double
api.callFlutterEchoDouble(aDouble: aDoubleArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoDoubleChannel.setMessageHandler(nil)
}
let callFlutterEchoStringChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoString", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoStringChannel.setMessageHandler { message, reply in
@ -566,6 +643,126 @@ class HostIntegrationCoreApiSetup {
} else {
callFlutterEchoStringChannel.setMessageHandler(nil)
}
let callFlutterEchoUint8ListChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoUint8List", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoUint8ListChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aListArg = args[0] as! FlutterStandardTypedData
api.callFlutterEchoUint8List(aList: aListArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoUint8ListChannel.setMessageHandler(nil)
}
let callFlutterEchoListChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoList", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoListChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aListArg = args[0] as! [Any?]
api.callFlutterEchoList(aList: aListArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoListChannel.setMessageHandler(nil)
}
let callFlutterEchoMapChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoMap", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoMapChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aMapArg = args[0] as! [String?: Any?]
api.callFlutterEchoMap(aMap: aMapArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoMapChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableBoolChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableBool", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aBoolArg = args[0] as? Bool
api.callFlutterEchoNullableBool(aBool: aBoolArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableBoolChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableIntChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableInt", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let anIntArg = args[0] as? Int32
api.callFlutterEchoNullableInt(anInt: anIntArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableIntChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableDoubleChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableDouble", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aDoubleArg = args[0] as? Double
api.callFlutterEchoNullableDouble(aDouble: aDoubleArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableDoubleChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableStringChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableString", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aStringArg = args[0] as? String
api.callFlutterEchoNullableString(aString: aStringArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableStringChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableUint8ListChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aListArg = args[0] as? FlutterStandardTypedData
api.callFlutterEchoNullableUint8List(aList: aListArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableUint8ListChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableListChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableList", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableListChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aListArg = args[0] as? [Any?]
api.callFlutterEchoNullableList(aList: aListArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableListChannel.setMessageHandler(nil)
}
let callFlutterEchoNullableMapChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableMap", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let aMapArg = args[0] as? [String?: Any?]
api.callFlutterEchoNullableMap(aMap: aMapArg) { result in
reply(wrapResult(result))
}
}
} else {
callFlutterEchoNullableMapChannel.setMessageHandler(nil)
}
}
}
private class FlutterIntegrationCoreApiCodecReader: FlutterStandardReader {
@ -765,10 +962,10 @@ class FlutterIntegrationCoreApi {
}
}
/// Returns the passed map, to test serialization and deserialization.
func echoNullableMap(aMap aMapArg: [String?: Any?], completion: @escaping ([String?: Any?]) -> Void) {
func echoNullableMap(aMap aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) {
let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec)
channel.sendMessage([aMapArg] as [Any?]) { response in
let result = response as! [String?: Any?]
let result = response as? [String?: Any?]
completion(result)
}
}

View File

@ -23,7 +23,7 @@ public class TestPlugin: NSObject, FlutterPlugin, HostIntegrationCoreApi {
// MARK: HostIntegrationCoreApi implementation
func noop() {
func noop() {
}
func echoAllTypes(everything: AllTypes) -> AllTypes {
@ -114,9 +114,78 @@ public class TestPlugin: NSObject, FlutterPlugin, HostIntegrationCoreApi {
}
}
func callFlutterEchoString(aString: String, completion: @escaping (String) -> Void) {
flutterAPI.echoString(aString: aString) { flutterString in
completion(flutterString)
func callFlutterEchoAllTypes(everything: AllTypes, completion: @escaping (AllTypes) -> Void) {
flutterAPI.echoAllTypes(everything: everything) { completion($0) }
}
func callFlutterSendMultipleNullableTypes(
aNullableBool: Bool?,
aNullableInt: Int32?,
aNullableString: String?,
completion: @escaping (AllNullableTypes) -> Void
) {
flutterAPI.sendMultipleNullableTypes(
aNullableBool: aNullableBool,
aNullableInt: aNullableInt,
aNullableString: aNullableString
) {
completion($0)
}
}
func callFlutterEchoBool(aBool: Bool, completion: @escaping (Bool) -> Void) {
flutterAPI.echoBool(aBool: aBool) { completion($0) }
}
func callFlutterEchoInt(anInt: Int32, completion: @escaping (Int32) -> Void) {
flutterAPI.echoInt(anInt: anInt) { completion($0) }
}
func callFlutterEchoDouble(aDouble: Double, completion: @escaping (Double) -> Void) {
flutterAPI.echoDouble(aDouble: aDouble) { completion($0) }
}
func callFlutterEchoString(aString: String, completion: @escaping (String) -> Void) {
flutterAPI.echoString(aString: aString) { completion($0) }
}
func callFlutterEchoUint8List(aList: FlutterStandardTypedData, completion: @escaping (FlutterStandardTypedData) -> Void) {
flutterAPI.echoUint8List(aList: aList) { completion($0) }
}
func callFlutterEchoList(aList: [Any?], completion: @escaping ([Any?]) -> Void) {
flutterAPI.echoList(aList: aList) { completion($0) }
}
func callFlutterEchoMap(aMap: [String? : Any?], completion: @escaping ([String? : Any?]) -> Void) {
flutterAPI.echoMap(aMap: aMap) { completion($0) }
}
func callFlutterEchoNullableBool(aBool: Bool?, completion: @escaping (Bool?) -> Void) {
flutterAPI.echoNullableBool(aBool: aBool) { completion($0) }
}
func callFlutterEchoNullableInt(anInt: Int32?, completion: @escaping (Int32?) -> Void) {
flutterAPI.echoNullableInt(anInt: anInt) { completion($0) }
}
func callFlutterEchoNullableDouble(aDouble: Double?, completion: @escaping (Double?) -> Void) {
flutterAPI.echoNullableDouble(aDouble: aDouble) { completion($0) }
}
func callFlutterEchoNullableString(aString: String?, completion: @escaping (String?) -> Void) {
flutterAPI.echoNullableString(aString: aString) { completion($0) }
}
func callFlutterEchoNullableUint8List(aList: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) {
flutterAPI.echoNullableUint8List(aList: aList) { completion($0) }
}
func callFlutterEchoNullableList(aList: [Any?]?, completion: @escaping ([Any?]?) -> Void) {
flutterAPI.echoNullableList(aList: aList) { completion($0) }
}
func callFlutterEchoNullableMap(aMap: [String? : Any?]?, completion: @escaping ([String? : Any?]?) -> Void) {
flutterAPI.echoNullableMap(aMap: aMap) { completion($0) }
}
}

View File

@ -1311,6 +1311,201 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger,
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoAllTypes",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_everything_arg = args.at(0);
if (encodable_everything_arg.IsNull()) {
reply(WrapError("everything_arg unexpectedly null."));
return;
}
const auto& everything_arg = std::any_cast<const AllTypes&>(
std::get<flutter::CustomEncodableValue>(
encodable_everything_arg));
api->CallFlutterEchoAllTypes(
everything_arg, [reply](ErrorOr<AllTypes>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
wrapped.push_back(flutter::CustomEncodableValue(
std::move(output).TakeValue()));
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi."
"callFlutterSendMultipleNullableTypes",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_nullable_bool_arg = args.at(0);
const auto* a_nullable_bool_arg =
std::get_if<bool>(&encodable_a_nullable_bool_arg);
const auto& encodable_a_nullable_int_arg = args.at(1);
const int64_t a_nullable_int_arg_value =
encodable_a_nullable_int_arg.IsNull()
? 0
: encodable_a_nullable_int_arg.LongValue();
const auto* a_nullable_int_arg =
encodable_a_nullable_int_arg.IsNull()
? nullptr
: &a_nullable_int_arg_value;
const auto& encodable_a_nullable_string_arg = args.at(2);
const auto* a_nullable_string_arg =
std::get_if<std::string>(&encodable_a_nullable_string_arg);
api->CallFlutterSendMultipleNullableTypes(
a_nullable_bool_arg, a_nullable_int_arg,
a_nullable_string_arg,
[reply](ErrorOr<AllNullableTypes>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
wrapped.push_back(flutter::CustomEncodableValue(
std::move(output).TakeValue()));
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoBool",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_bool_arg = args.at(0);
if (encodable_a_bool_arg.IsNull()) {
reply(WrapError("a_bool_arg unexpectedly null."));
return;
}
const auto& a_bool_arg = std::get<bool>(encodable_a_bool_arg);
api->CallFlutterEchoBool(
a_bool_arg, [reply](ErrorOr<bool>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
wrapped.push_back(
flutter::EncodableValue(std::move(output).TakeValue()));
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoInt",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_an_int_arg = args.at(0);
if (encodable_an_int_arg.IsNull()) {
reply(WrapError("an_int_arg unexpectedly null."));
return;
}
const int64_t an_int_arg = encodable_an_int_arg.LongValue();
api->CallFlutterEchoInt(
an_int_arg, [reply](ErrorOr<int64_t>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
wrapped.push_back(
flutter::EncodableValue(std::move(output).TakeValue()));
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoDouble",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_double_arg = args.at(0);
if (encodable_a_double_arg.IsNull()) {
reply(WrapError("a_double_arg unexpectedly null."));
return;
}
const auto& a_double_arg =
std::get<double>(encodable_a_double_arg);
api->CallFlutterEchoDouble(
a_double_arg, [reply](ErrorOr<double>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
wrapped.push_back(
flutter::EncodableValue(std::move(output).TakeValue()));
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
@ -1348,6 +1543,399 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger,
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoUint8List",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_list_arg = args.at(0);
if (encodable_a_list_arg.IsNull()) {
reply(WrapError("a_list_arg unexpectedly null."));
return;
}
const auto& a_list_arg =
std::get<std::vector<uint8_t>>(encodable_a_list_arg);
api->CallFlutterEchoUint8List(
a_list_arg, [reply](ErrorOr<std::vector<uint8_t>>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
wrapped.push_back(
flutter::EncodableValue(std::move(output).TakeValue()));
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoList",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_list_arg = args.at(0);
if (encodable_a_list_arg.IsNull()) {
reply(WrapError("a_list_arg unexpectedly null."));
return;
}
const auto& a_list_arg =
std::get<flutter::EncodableList>(encodable_a_list_arg);
api->CallFlutterEchoList(
a_list_arg,
[reply](ErrorOr<flutter::EncodableList>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
wrapped.push_back(
flutter::EncodableValue(std::move(output).TakeValue()));
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoMap",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_map_arg = args.at(0);
if (encodable_a_map_arg.IsNull()) {
reply(WrapError("a_map_arg unexpectedly null."));
return;
}
const auto& a_map_arg =
std::get<flutter::EncodableMap>(encodable_a_map_arg);
api->CallFlutterEchoMap(
a_map_arg, [reply](ErrorOr<flutter::EncodableMap>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
wrapped.push_back(
flutter::EncodableValue(std::move(output).TakeValue()));
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableBool",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_bool_arg = args.at(0);
const auto* a_bool_arg = std::get_if<bool>(&encodable_a_bool_arg);
api->CallFlutterEchoNullableBool(
a_bool_arg, [reply](ErrorOr<std::optional<bool>>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
auto output_optional = std::move(output).TakeValue();
if (output_optional) {
wrapped.push_back(flutter::EncodableValue(
std::move(output_optional).value()));
} else {
wrapped.push_back(flutter::EncodableValue());
}
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableInt",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_an_int_arg = args.at(0);
const int64_t an_int_arg_value =
encodable_an_int_arg.IsNull()
? 0
: encodable_an_int_arg.LongValue();
const auto* an_int_arg =
encodable_an_int_arg.IsNull() ? nullptr : &an_int_arg_value;
api->CallFlutterEchoNullableInt(
an_int_arg,
[reply](ErrorOr<std::optional<int64_t>>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
auto output_optional = std::move(output).TakeValue();
if (output_optional) {
wrapped.push_back(flutter::EncodableValue(
std::move(output_optional).value()));
} else {
wrapped.push_back(flutter::EncodableValue());
}
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi."
"callFlutterEchoNullableDouble",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_double_arg = args.at(0);
const auto* a_double_arg =
std::get_if<double>(&encodable_a_double_arg);
api->CallFlutterEchoNullableDouble(
a_double_arg,
[reply](ErrorOr<std::optional<double>>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
auto output_optional = std::move(output).TakeValue();
if (output_optional) {
wrapped.push_back(flutter::EncodableValue(
std::move(output_optional).value()));
} else {
wrapped.push_back(flutter::EncodableValue());
}
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi."
"callFlutterEchoNullableString",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_string_arg = args.at(0);
const auto* a_string_arg =
std::get_if<std::string>(&encodable_a_string_arg);
api->CallFlutterEchoNullableString(
a_string_arg,
[reply](ErrorOr<std::optional<std::string>>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
auto output_optional = std::move(output).TakeValue();
if (output_optional) {
wrapped.push_back(flutter::EncodableValue(
std::move(output_optional).value()));
} else {
wrapped.push_back(flutter::EncodableValue());
}
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi."
"callFlutterEchoNullableUint8List",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_list_arg = args.at(0);
const auto* a_list_arg =
std::get_if<std::vector<uint8_t>>(&encodable_a_list_arg);
api->CallFlutterEchoNullableUint8List(
a_list_arg,
[reply](
ErrorOr<std::optional<std::vector<uint8_t>>>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
auto output_optional = std::move(output).TakeValue();
if (output_optional) {
wrapped.push_back(flutter::EncodableValue(
std::move(output_optional).value()));
} else {
wrapped.push_back(flutter::EncodableValue());
}
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableList",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_list_arg = args.at(0);
const auto* a_list_arg =
std::get_if<flutter::EncodableList>(&encodable_a_list_arg);
api->CallFlutterEchoNullableList(
a_list_arg,
[reply](
ErrorOr<std::optional<flutter::EncodableList>>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
auto output_optional = std::move(output).TakeValue();
if (output_optional) {
wrapped.push_back(flutter::EncodableValue(
std::move(output_optional).value()));
} else {
wrapped.push_back(flutter::EncodableValue());
}
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
{
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger,
"dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoNullableMap",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const flutter::EncodableValue& message,
const flutter::MessageReply<flutter::EncodableValue>& reply) {
try {
const auto& args = std::get<flutter::EncodableList>(message);
const auto& encodable_a_map_arg = args.at(0);
const auto* a_map_arg =
std::get_if<flutter::EncodableMap>(&encodable_a_map_arg);
api->CallFlutterEchoNullableMap(
a_map_arg,
[reply](
ErrorOr<std::optional<flutter::EncodableMap>>&& output) {
if (output.has_error()) {
reply(WrapError(output.error()));
return;
}
flutter::EncodableList wrapped;
auto output_optional = std::move(output).TakeValue();
if (output_optional) {
wrapped.push_back(flutter::EncodableValue(
std::move(output_optional).value()));
} else {
wrapped.push_back(flutter::EncodableValue());
}
reply(flutter::EncodableValue(std::move(wrapped)));
});
} catch (const std::exception& exception) {
reply(WrapError(exception.what()));
}
});
} else {
channel->SetMessageHandler(nullptr);
}
}
}
flutter::EncodableValue HostIntegrationCoreApi::WrapError(
@ -1826,8 +2414,8 @@ void FlutterIntegrationCoreApi::EchoNullableList(
});
}
void FlutterIntegrationCoreApi::EchoNullableMap(
const flutter::EncodableMap& a_map_arg,
std::function<void(const flutter::EncodableMap&)>&& on_success,
const flutter::EncodableMap* a_map_arg,
std::function<void(const flutter::EncodableMap*)>&& on_success,
std::function<void(const FlutterError&)>&& on_error) {
auto channel = std::make_unique<flutter::BasicMessageChannel<>>(
binary_messenger_,
@ -1835,7 +2423,8 @@ void FlutterIntegrationCoreApi::EchoNullableMap(
&GetCodec());
flutter::EncodableValue encoded_api_arguments =
flutter::EncodableValue(flutter::EncodableList{
flutter::EncodableValue(a_map_arg),
a_map_arg ? flutter::EncodableValue(*a_map_arg)
: flutter::EncodableValue(),
});
channel->Send(
encoded_api_arguments,
@ -1844,8 +2433,8 @@ void FlutterIntegrationCoreApi::EchoNullableMap(
std::unique_ptr<flutter::EncodableValue> response =
GetCodec().DecodeMessage(reply, reply_size);
const auto& encodable_return_value = *response;
const auto& return_value =
std::get<flutter::EncodableMap>(encodable_return_value);
const auto* return_value =
std::get_if<flutter::EncodableMap>(&encodable_return_value);
on_success(return_value);
});
}

View File

@ -327,9 +327,56 @@ class HostIntegrationCoreApi {
std::function<void(ErrorOr<std::string> reply)> result) = 0;
virtual void CallFlutterNoop(
std::function<void(std::optional<FlutterError> reply)> result) = 0;
virtual void CallFlutterEchoAllTypes(
const AllTypes& everything,
std::function<void(ErrorOr<AllTypes> reply)> result) = 0;
virtual void CallFlutterSendMultipleNullableTypes(
const bool* a_nullable_bool, const int64_t* a_nullable_int,
const std::string* a_nullable_string,
std::function<void(ErrorOr<AllNullableTypes> reply)> result) = 0;
virtual void CallFlutterEchoBool(
bool a_bool, std::function<void(ErrorOr<bool> reply)> result) = 0;
virtual void CallFlutterEchoInt(
int64_t an_int, std::function<void(ErrorOr<int64_t> reply)> result) = 0;
virtual void CallFlutterEchoDouble(
double a_double, std::function<void(ErrorOr<double> reply)> result) = 0;
virtual void CallFlutterEchoString(
const std::string& a_string,
std::function<void(ErrorOr<std::string> reply)> result) = 0;
virtual void CallFlutterEchoUint8List(
const std::vector<uint8_t>& a_list,
std::function<void(ErrorOr<std::vector<uint8_t>> reply)> result) = 0;
virtual void CallFlutterEchoList(
const flutter::EncodableList& a_list,
std::function<void(ErrorOr<flutter::EncodableList> reply)> result) = 0;
virtual void CallFlutterEchoMap(
const flutter::EncodableMap& a_map,
std::function<void(ErrorOr<flutter::EncodableMap> reply)> result) = 0;
virtual void CallFlutterEchoNullableBool(
const bool* a_bool,
std::function<void(ErrorOr<std::optional<bool>> reply)> result) = 0;
virtual void CallFlutterEchoNullableInt(
const int64_t* an_int,
std::function<void(ErrorOr<std::optional<int64_t>> reply)> result) = 0;
virtual void CallFlutterEchoNullableDouble(
const double* a_double,
std::function<void(ErrorOr<std::optional<double>> reply)> result) = 0;
virtual void CallFlutterEchoNullableString(
const std::string* a_string,
std::function<void(ErrorOr<std::optional<std::string>> reply)>
result) = 0;
virtual void CallFlutterEchoNullableUint8List(
const std::vector<uint8_t>* a_list,
std::function<void(ErrorOr<std::optional<std::vector<uint8_t>>> reply)>
result) = 0;
virtual void CallFlutterEchoNullableList(
const flutter::EncodableList* a_list,
std::function<void(ErrorOr<std::optional<flutter::EncodableList>> reply)>
result) = 0;
virtual void CallFlutterEchoNullableMap(
const flutter::EncodableMap* a_map,
std::function<void(ErrorOr<std::optional<flutter::EncodableMap>> reply)>
result) = 0;
// The codec used by HostIntegrationCoreApi.
static const flutter::StandardMessageCodec& GetCodec();
@ -449,8 +496,8 @@ class FlutterIntegrationCoreApi {
std::function<void(const FlutterError&)>&& on_error);
// Returns the passed map, to test serialization and deserialization.
void EchoNullableMap(
const flutter::EncodableMap& a_map,
std::function<void(const flutter::EncodableMap&)>&& on_success,
const flutter::EncodableMap* a_map,
std::function<void(const flutter::EncodableMap*)>&& on_success,
std::function<void(const FlutterError&)>&& on_error);
};

View File

@ -23,6 +23,9 @@ using core_tests_pigeontest::ErrorOr;
using core_tests_pigeontest::FlutterError;
using core_tests_pigeontest::FlutterIntegrationCoreApi;
using core_tests_pigeontest::HostIntegrationCoreApi;
using flutter::EncodableList;
using flutter::EncodableMap;
using flutter::EncodableValue;
// static
void TestPlugin::RegisterWithRegistrar(
@ -73,8 +76,8 @@ ErrorOr<std::vector<uint8_t>> TestPlugin::EchoUint8List(
return a_uint8_list;
}
ErrorOr<flutter::EncodableValue> TestPlugin::EchoObject(
const flutter::EncodableValue& an_object) {
ErrorOr<EncodableValue> TestPlugin::EchoObject(
const EncodableValue& an_object) {
return an_object;
}
@ -158,8 +161,8 @@ ErrorOr<std::optional<std::vector<uint8_t>>> TestPlugin::EchoNullableUint8List(
return *a_nullable_uint8_list;
};
ErrorOr<std::optional<flutter::EncodableValue>> TestPlugin::EchoNullableObject(
const flutter::EncodableValue* a_nullable_object) {
ErrorOr<std::optional<EncodableValue>> TestPlugin::EchoNullableObject(
const EncodableValue* a_nullable_object) {
if (!a_nullable_object) {
return std::nullopt;
}
@ -183,12 +186,153 @@ void TestPlugin::CallFlutterNoop(
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoAllTypes(
const AllTypes& everything,
std::function<void(ErrorOr<AllTypes> reply)> result) {
flutter_api_->EchoAllTypes(
everything, [result](const AllTypes& echo) { result(echo); },
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterSendMultipleNullableTypes(
const bool* a_nullable_bool, const int64_t* a_nullable_int,
const std::string* a_nullable_string,
std::function<void(ErrorOr<AllNullableTypes> reply)> result) {
flutter_api_->SendMultipleNullableTypes(
a_nullable_bool, a_nullable_int, a_nullable_string,
[result](const AllNullableTypes& echo) { result(echo); },
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoBool(
bool a_bool, std::function<void(ErrorOr<bool> reply)> result) {
flutter_api_->EchoBool(
a_bool, [result](bool echo) { result(echo); },
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoInt(
int64_t an_int, std::function<void(ErrorOr<int64_t> reply)> result) {
flutter_api_->EchoInt(
an_int, [result](int64_t echo) { result(echo); },
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoDouble(
double a_double, std::function<void(ErrorOr<double> reply)> result) {
flutter_api_->EchoDouble(
a_double, [result](double echo) { result(echo); },
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoString(
const std::string& a_string,
std::function<void(ErrorOr<std::string> reply)> result) {
flutter_api_->EchoString(
a_string, [result](const std::string& echo) { result(echo); },
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoUint8List(
const std::vector<uint8_t>& a_list,
std::function<void(ErrorOr<std::vector<uint8_t>> reply)> result) {
flutter_api_->EchoUint8List(
a_list, [result](const std::vector<uint8_t>& echo) { result(echo); },
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoList(
const EncodableList& a_list,
std::function<void(ErrorOr<EncodableList> reply)> result) {
flutter_api_->EchoList(
a_list, [result](const EncodableList& echo) { result(echo); },
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoMap(
const EncodableMap& a_map,
std::function<void(ErrorOr<EncodableMap> reply)> result) {
flutter_api_->EchoMap(
a_map, [result](const EncodableMap& echo) { result(echo); },
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoNullableBool(
const bool* a_bool,
std::function<void(ErrorOr<std::optional<bool>> reply)> result) {
flutter_api_->EchoNullableBool(
a_bool,
[result](const bool* echo) {
result(echo ? std::optional<bool>(*echo) : std::nullopt);
},
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoNullableInt(
const int64_t* an_int,
std::function<void(ErrorOr<std::optional<int64_t>> reply)> result) {
flutter_api_->EchoNullableInt(
an_int,
[result](const int64_t* echo) {
result(echo ? std::optional<int64_t>(*echo) : std::nullopt);
},
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoNullableDouble(
const double* a_double,
std::function<void(ErrorOr<std::optional<double>> reply)> result) {
flutter_api_->EchoNullableDouble(
a_double,
[result](const double* echo) {
result(echo ? std::optional<double>(*echo) : std::nullopt);
},
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoNullableString(
const std::string* a_string,
std::function<void(ErrorOr<std::optional<std::string>> reply)> result) {
flutter_api_->EchoNullableString(
a_string,
[result](const std::string& flutter_string) { result(flutter_string); },
[result](const std::string* echo) {
result(echo ? std::optional<std::string>(*echo) : std::nullopt);
},
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoNullableUint8List(
const std::vector<uint8_t>* a_list,
std::function<void(ErrorOr<std::optional<std::vector<uint8_t>>> reply)>
result) {
flutter_api_->EchoNullableUint8List(
a_list,
[result](const std::vector<uint8_t>* echo) {
result(echo ? std::optional<std::vector<uint8_t>>(*echo)
: std::nullopt);
},
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoNullableList(
const EncodableList* a_list,
std::function<void(ErrorOr<std::optional<EncodableList>> reply)> result) {
flutter_api_->EchoNullableList(
a_list,
[result](const EncodableList* echo) {
result(echo ? std::optional<EncodableList>(*echo) : std::nullopt);
},
[result](const FlutterError& error) { result(error); });
}
void TestPlugin::CallFlutterEchoNullableMap(
const EncodableMap* a_map,
std::function<void(ErrorOr<std::optional<EncodableMap>> reply)> result) {
flutter_api_->EchoNullableMap(
a_map,
[result](const EncodableMap* echo) {
result(echo ? std::optional<EncodableMap>(*echo) : std::nullopt);
},
[result](const FlutterError& error) { result(error); });
}

View File

@ -82,10 +82,88 @@ class TestPlugin : public flutter::Plugin,
std::function<
void(std::optional<core_tests_pigeontest::FlutterError> reply)>
result) override;
void CallFlutterEchoAllTypes(
const core_tests_pigeontest::AllTypes& everything,
std::function<
void(core_tests_pigeontest::ErrorOr<core_tests_pigeontest::AllTypes>
reply)>
result) override;
void CallFlutterSendMultipleNullableTypes(
const bool* a_nullable_bool, const int64_t* a_nullable_int,
const std::string* a_nullable_string,
std::function<void(core_tests_pigeontest::ErrorOr<
core_tests_pigeontest::AllNullableTypes>
reply)>
result) override;
void CallFlutterEchoBool(
bool a_bool,
std::function<void(core_tests_pigeontest::ErrorOr<bool> reply)> result)
override;
void CallFlutterEchoInt(
int64_t an_int,
std::function<void(core_tests_pigeontest::ErrorOr<int64_t> reply)> result)
override;
void CallFlutterEchoDouble(
double a_double,
std::function<void(core_tests_pigeontest::ErrorOr<double> reply)> result)
override;
void CallFlutterEchoString(
const std::string& a_string,
std::function<void(core_tests_pigeontest::ErrorOr<std::string> reply)>
result) override;
void CallFlutterEchoUint8List(
const std::vector<uint8_t>& a_list,
std::function<
void(core_tests_pigeontest::ErrorOr<std::vector<uint8_t>> reply)>
result) override;
void CallFlutterEchoList(
const flutter::EncodableList& a_list,
std::function<
void(core_tests_pigeontest::ErrorOr<flutter::EncodableList> reply)>
result) override;
void CallFlutterEchoMap(
const flutter::EncodableMap& a_map,
std::function<
void(core_tests_pigeontest::ErrorOr<flutter::EncodableMap> reply)>
result) override;
void CallFlutterEchoNullableBool(
const bool* a_bool,
std::function<
void(core_tests_pigeontest::ErrorOr<std::optional<bool>> reply)>
result) override;
void CallFlutterEchoNullableInt(
const int64_t* an_int,
std::function<
void(core_tests_pigeontest::ErrorOr<std::optional<int64_t>> reply)>
result) override;
void CallFlutterEchoNullableDouble(
const double* a_double,
std::function<
void(core_tests_pigeontest::ErrorOr<std::optional<double>> reply)>
result) override;
void CallFlutterEchoNullableString(
const std::string* a_string,
std::function<void(
core_tests_pigeontest::ErrorOr<std::optional<std::string>> reply)>
result) override;
void CallFlutterEchoNullableUint8List(
const std::vector<uint8_t>* a_list,
std::function<void(
core_tests_pigeontest::ErrorOr<std::optional<std::vector<uint8_t>>>
reply)>
result) override;
void CallFlutterEchoNullableList(
const flutter::EncodableList* a_list,
std::function<void(
core_tests_pigeontest::ErrorOr<std::optional<flutter::EncodableList>>
reply)>
result) override;
void CallFlutterEchoNullableMap(
const flutter::EncodableMap* a_map,
std::function<void(
core_tests_pigeontest::ErrorOr<std::optional<flutter::EncodableMap>>
reply)>
result) override;
private:
std::unique_ptr<core_tests_pigeontest::FlutterIntegrationCoreApi>