传递java列表时出错 飞镖清单

问题描述 投票:1回答:1

好的,我完全按照这个例子: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中的双打列表并不相同。但这只是我想的一件事。可能是问题吗?我该如何解决?

java android list double flutter
1个回答
0
投票

尝试接收没有List<double>,因为Dart假设List内部的类型是动态的而不是原始的,所以当你试图将List<dynamic>解析为List<double>时你会出错。

 final List result = await platform.invokeMethod('getBatteryLevel');

应该管用。

不要忘记在MainActivity中包含导入,看起来您正在使用ArraysList类,然后导入以下类:

import java.util.Arrays;
import java.util.List;
© www.soinside.com 2019 - 2024. All rights reserved.