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

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

  1. platform_channel个文档指出"方法调用也可以反向发送,平台充当DART中实现的方法的客户端.quick_actions plugin就是一个具体的例子."在这种情况下,我看不出本地端是如何从Ffltter接收消息的.
  2. 看起来BasicMessageChannel的send()方法可以用来将"指定的消息发送到此通道上的平台插件".有人能提供一个简单的实现示例吗?

推荐答案

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

  1. 将字符串值从Ffltter传递给Android代码
  2. 从Android代码获得对Flatter的响应

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

希望这能有所帮助!

Flutter相关问答推荐

在fltter_widget_from_html中启动url

Flutter 中的多页表现

Flex ListView用于可滚动和响应的页面

如何在Ffltter 3.16中设置标准的提升按钮主题?

在VSCode中运行应用程序而不进行调试时,控制台仍显示为调试模式

集装箱堆放和定位时的高度问题

Riverpod Provider.family 和 HookConsumerWidget 不刷新 UI

ScaffoldMessenger 在等待键下方不起作用

无法应用插件com.chaquo.python

不使用 GlobalKey 仍然收到 GlobalKey 被多次使用的错误

Flutter Flame OS 错误:使用音频文件 .wav 时出现该进程无法访问该文件,因为它正被另一个进程使用

无法使用 bloc 更新 ListView.builder 的特定时间

如何让小部件根据小部件的大小构建不同的布局?

type '({bool growable}) => List' 不是类型转换中类型 'List' 的子类型

单元测试中如何比较NaN和NaN是否相等

如何验证非表单字段?

无法将参数类型Future Function(String?)分配给参数类型void Function(NotificationResponse)?

如何制作两个显示相关内容且可编辑的文本字段?

Flutter :RangeError(索引):无效值:不在包含范围内0..3:4使用IndexedListView.builder

解密 Modulr 安全令牌