如果需要与特定的API /硬件组件进行交互,您如何将Flutter的信息传递回Android / Native代码?
是否有任何可以通过其他方式发送信息的事件频道或与回调类似的内容?
答案 0 :(得分:22)
这是一个简单的实现展示:
代码基于以下示例:https://flutter.io/platform-channels/#codec
1.Passing string value“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.在RandomFunction();
之后获得回复“batterylevel” 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();
}
}
希望这有帮助!
答案 1 :(得分:4)
是的,flutter确实有一个EventChannel
类,这正是你正在寻找的。 p>
Here就是一个示例,演示了如何实现MethodChannel
和EventChannel
。和
this中等文章展示了EventChannel
如何在flutter中实现。
希望有所帮助!
答案 2 :(得分:1)
快速
guard let args = call.arguments as? [String : Any] else {return}
let phoneNumber = args["contactNumber"] as! String
let originalMessage = args["message"] as! String
答案 3 :(得分:0)
目标C
call.arguments [@“ parameter”]