一尘不染

如何将消息从Flutter传递给Native?

flutter

如果需要与特定的API /硬件组件进行交互,您如何将信息从Flutter传递回Android /本机代码?

是否有任何事件通道可以通过其他方式或类似回调的方式发送信息?

  1. 所述platform_channel文档指出“方法的调用,也可在相反方向上发送的,与平台充当客户端中的该飞镖。一个具体的例子实现的方法是quick_actions插件 ”。在这种情况下,我看不出本机端如何从Flutter接收消息。
  2. 看起来BasicMessageChannel的send()方法可用于发送“指定的消息到此通道上的平台插件”。谁能提供一个简单的实现示例?

阅读 387

收藏
2020-08-13

共1个答案

一尘不染

这是一个简单的实现,展示了:

  1. 将字符串值从Flutter传递到Android代码
  2. 从Android代码获得响应以应对混乱

代码基于以下示例: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.在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();
                    }
                }

希望这可以帮助!

2020-08-13