好的,我完全按照这个例子:https://flutter.io/platform-channels/
并试图像这样修改它:
List<double> points;
try {
//Changed This
/*final String result = await platform.invokeMethod('getBatteryLevel');
batteryLevel = 'Battery level at $result % .'; */
//To This
final List<double> result = await platform.invokeMethod('getBatteryLevel');
points = result;
print("Message 2");
然后在MainActivity.java中,将getBatteryLevel函数更改为:
private List<Double> getBatteryLevel() {
List<Double> list = Arrays.asList(1.38, 2.56, 4.3);
return list;
最后将MethodCall更改为:
List<Double> batteryLevel = getBatteryLevel();
Log.i("errors", "Message");
result.success(batteryLevel);
但是当我运行代码时,消息1被打印但消息2没有。我注意到像Strings和Integer这样的简单类型而不是List工作。我也尝试用java中的数组替换List,但仍然无效。问题是我没有任何错误,任何堆栈跟踪,任何事情。我认为在飞镖中他正在等待一些永远不会出现的事情,因为Dart和Java中的双打列表并不相同。但这只是我想的一件事。可能是问题吗?我该如何解决?
尝试接收没有List
的<double>
,因为Dart假设List
内部的类型是动态的而不是原始的,所以当你试图将List<dynamic>
解析为List<double>
时你会出错。
final List result = await platform.invokeMethod('getBatteryLevel');
应该管用。
不要忘记在MainActivity中包含导入,看起来您正在使用Arrays
和List
类,然后导入以下类:
import java.util.Arrays;
import java.util.List;