How to pass a message from Flutter to Native?
This is a simple implementation showcasing :
- Passing a string Value from flutter to Android code
- Getting back response from Android code to flutter
code is based on example from :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.Getting back response "batterylevel" after 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();
}
}
Hope this helps!
Objective C
call.arguments[@"parameter"]
Android
call.argument("parameter");
Yes, flutter does has an EventChannel
class which is what you are looking for exactly.
Here is an example of that demonstrates how MethodChannel
and EventChannel
can be implemented. And
this medium article shows how an EventChannel
can be implemented in flutter.
Hope that helped!