将java List <double>传递到dart List <double>时出错

时间:2018-08-30 15:25:48

标签: java android list double flutter

好吧,我完全遵循此示例: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中,他正在等待从未出现过的事情,因为Dart和Java中的双打列表不一样。但这只是我的想法。可能是问题吗?我该如何解决?

1 个答案:

答案 0 :(得分:0)

尝试接收不带List的{​​{1}},因为Dart认为<double>内的类型是动态的而不是原始的,因此在尝试解析{{1}时会出错}放入List

List<dynamic>

应该工作。

不要忘记将导入内容包括在MainActivity中,看起来您正在使用List<double> final List result = await platform.invokeMethod('getBatteryLevel'); 类,然后导入以下类:

Arrays