android - 如何将消息从 Flutter 传递到 Native?

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

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

  1. platform_channel文档指出“方法调用也可以反向发送,平台充当在 Dart 中实现的方法的客户端。这方面的一个具体例子是 quick_actions plugin。”在这种情况下,我看不到原生端如何接收来自 Flutter 的消息。
  2. 它看起来像 BasicMessageChannel的 send() 方法可用于将“指定消息发送到此 channel 上的平台插件”。谁能提供一个简单的实现示例?

最佳答案

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

  1. 将字符串值从 Flutter 传递到 Android 代码
  2. 从 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. 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();
                    }
                }

希望这会有所帮助!

https://stackoverflow.com/questions/49099408/

相关文章:

dart - 为什么 setState 会关闭?

dart - 如何强制 Flutter 重建/重绘所有小部件?

dart - 错误 : Only static members can be accessed in

android - 让 Flutter 应用全屏显示

flutter - 如何更改 TextField 的高度和宽度?

flutter - 在 Flutter 中更改 TextField 的下划线

android - 如何在 flutter 中制作不透明的教程屏幕?

dart - flutter : Where is the title of Material Ap

flutter - Flutter 的 pubspec.yaml 中依赖版本号前的脱字符号 (^)

dart - 在 Dart 中枚举或映射具有索引和值的列表