diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index 9f1d307c37..1d3a1deb4c 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -56,7 +56,9 @@ void _writeHostApi(Indent indent, Api api) { argSignature.add('${method.argType} arg'); } if (method.isAsynchronous) { - argSignature.add('Result<${method.returnType}> result'); + final String returnType = + method.returnType == 'void' ? 'Void' : method.returnType; + argSignature.add('Result<$returnType> result'); } indent.writeln('$returnType ${method.name}(${argSignature.join(', ')});'); } @@ -94,9 +96,11 @@ void _writeHostApi(Indent indent, Api api) { methodArgument.add('input'); } if (method.isAsynchronous) { + final String resultValue = + method.returnType == 'void' ? 'null' : 'result.toMap()'; methodArgument.add( 'result -> { ' - 'wrapped.put("${Keys.result}", result.toMap()); ' + 'wrapped.put("${Keys.result}", $resultValue); ' 'reply.reply(wrapped); ' '}', ); diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 54665b825a..caec03d65c 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -250,7 +250,7 @@ void _writeHostApiSource(Indent indent, ObjcOptions options, Api api) { } if (func.isAsynchronous) { if (func.returnType == 'void') { - const String callback = 'callback(error));'; + const String callback = 'callback(error);'; if (func.argType == 'void') { indent.writeScoped( '[api ${func.name}:^(FlutterError *_Nullable error) {', diff --git a/packages/pigeon/pigeons/async_handlers.dart b/packages/pigeon/pigeons/async_handlers.dart index 67c439e7ae..6e2cb02a0c 100644 --- a/packages/pigeon/pigeons/async_handlers.dart +++ b/packages/pigeon/pigeons/async_handlers.dart @@ -12,6 +12,8 @@ class Value { abstract class Api2Host { @async Value calculate(Value value); + @async + void voidVoid(); } @FlutterApi()