Я пытаюсь вызвать функцию из трепетания по событию onTap и передать некоторые аргументы в родной Android.Пожалуйста, обратите внимание, что я больше являюсь разработчиком PHP / JavaScript, я Kotlin virgin.
Пока мне удалось сделать это, используя:
static const platform = const MethodChannel('foo.bar/example');
void _onTap() {
var arguments = {'name': widget.recipe.name, 'id': widget.recipe.id.toString()};
platform.invokeMethod('setPageView', arguments);
}
Затем в MainActivity.kt
class MainActivity : FlutterActivity() {
private val channel: String = "foo.bar/example"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this)
val logger = AppEventsLogger.newLogger(this)
MethodChannel(flutterView, channel).setMethodCallHandler(MethodChannel.MethodCallHandler(fun(methodCall: MethodCall, result: MethodChannel.Result) {
if (methodCall.method.equals("setPageView")) {
val params = Bundle()
params.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "recipe")
params.putString(AppEventsConstants.EVENT_PARAM_CONTENT, methodCall.argument("recipe"))
params.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, methodCall.argument("id"))
logger.logEvent(AppEventsConstants.EVENT_NAME_VIEWED_CONTENT, 0.0, params)
logger.logEvent("pageView", 0.0, params)
System.out.println("Called setPageView.")
}
}))
}
}
Проблема в том, что когда я захожу внутрь MethodCallHandler, событие по какой-то причине не отправляется в facebook.Но если я зарегистрирую что-то прямо под
val logger = AppEventsLogger.newLogger(this)
Событие успешно отправлено на Facebook.
Код внутри MethodCallHandler выполняется, так что это не проблема.
Есть идеи, что я сделал не так?
Спасибо