【问题标题】:Error Passing java List<Double> to dart List<double>将 java List<Double> 传递给 dart List<double> 时出错
【发布时间】:2019-02-05 14:36:47
【问题描述】:

好的,我完全按照这个例子: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);

但是当我运行代码时,Message 1 会打印出来,但 Message 2 不会。 我注意到使用像 Strings 和 Integer 这样的简单类型而不是 List 有效。我也尝试用java中的数组替换List,但还是不行。问题是我没有得到任何错误任何堆栈跟踪,任何东西。我的想法是,在 dart 中,他正在等待一些永远不会出现的东西,因为 Dart 和 Java 中的双打列表不一样。但这只是我想的一件事。会不会是问题?我该如何解决?

【问题讨论】:

    标签: java android list double flutter


    【解决方案1】:

    尝试在没有&lt;double&gt; 的情况下接收List,因为Dart 假定List 中的类型是动态的而不是原始的,所以当您尝试将List&lt;dynamic&gt; 解析为List&lt;double&gt; 时会出错。

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

    应该可以。

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

    import java.util.Arrays;
    import java.util.List;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 2018-07-17
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多