Как передать сообщение от Flutter к Native?
Как бы вы передали информацию из Flutter обратно в Android / родной код, если это необходимо для взаимодействия с конкретным API / аппаратным компонентом?
есть ли какие-либо каналы событий, которые могут отправлять информацию другим способом или что-то похожее на обратный вызов?
- на platform_channel документация указывает " вызовы методов также могут быть отправлены в обратном направлении, при этом платформа действует как клиент для методов, реализованных в Dart. Конкретным примером этого является the плагин quick_actions.- Я не понимаю, как туземная сторона получает сообщение от флаттера в данном случае.
- похоже BasicMessageChannelметод send () можно использовать для отправки "указанного сообщения плагинам платформы на этом канале". Может ли кто-нибудь привести простой пример реализации этого?
2 ответов
Это простая демонстрация реализации :
- передача строкового значения из flutter в Android code
- получение ответа от кода Android для flutter
код основан на примере из :https://flutter.io/platform-channels/#codec
1.Передача строкового значения "text":
String text = "whatever";
Future<Null> _getBatteryLevel(text) async {
String batteryLevel;
try {
final String result = await platform.invokeMethod('getBatteryLevel',{"text":text});
batteryLevel = 'Battery level at $result % .';
} on PlatformException catch (e) {
batteryLevel = "Failed to get battery level: '${e.message}'.";
}
setState(() {
_batteryLevel = batteryLevel;
});
}
2.Получение ответа "batterylevel" после RandomFunction ();
public void onMethodCall(MethodCall call, MethodChannel.Result result) {
if (call.method.equals("getBatteryLevel")) {
text = call.argument("text");
String batteryLevel = RandomFunction(text);
if (batteryLevel != null) {
result.success(batteryLevel);
} else {
result.error("UNAVAILABLE", "Battery level not available.", null);
}
} else {
result.notImplemented();
}
}
надеюсь, что это помогает!
да, flutter имеет EventChannel
класс, который является то, что вы ищете именно.
здесь является примером того, что демонстрирует, как MethodChannel
и EventChannel
могут быть реализованы. И
этой средняя статья показывает, как EventChannel
может быть реализован в flutter.
надеюсь, что помогла!