Я использую канал флаттера для связи с android (Kotlin) собственной стороной моего приложения. Но я не знаю, возможно ли отправить обратный вызов (в данном случае это функция, которая просто принимает строку в качестве аргумента) из Dart в Kotlin? Если да, то как мне его набрать?
Скажем, например, у меня есть эта функция дротика
void _acceptEngineOutput(String output){
}
И эта Kotlin функция
fun readEngineOutput(callback) {
while(process.isAlive) {
line = outputBuffer.readLine()
if (line != null && line.length > 0) callback(line)
}
}
Как должен вызываться параметр обратного вызова по типу, чтобы я мог передать функцию _acceptOutput?
Это мой класс MainActivity, сейчас я просто пропускаю тип обратного вызова в методе sendEngineOutput.
package com.loloof64.chess_exercise_manager_flutter
import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.plugin.common.MethodChannel
import com.kalab.chess.enginesupport.ChessEngineResolver
import com.kalab.chess.enginesupport.ChessEngine
import java.io.File
class MainActivity: FlutterActivity() {
private val CHANNEL = "loloof64.chess_utils/engine_discovery"
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine)
MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler(
{ call, result ->
if (call.method.equals("copyAllEnginesToAppDir")) {
copyAllEnginesToAppDir()
result.success(1)
}
else if (call.method.equals("setEngineOutputListener")) {
setEngineOutputListener(call.arguments)
result.success(output)
}
else {
result.notImplemented();
}
}
)
}
private fun setEngineOutputListener(callback) {
}
}