Ошибка передачи списка Java <Double>в список DART <double> - PullRequest
0 голосов
/ 30 августа 2018

Хорошо, я полностью следовал этому примеру: 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 работал. Я также пытался заменить List массивами в Java, но все равно не получилось. Проблема в том, что я не получаю никаких ошибок, никаких следов стека, ничего. Я подумал, что в дартсе он ждет чего-то, что никогда не приходит, так как списки двойников в дартсе и Java не совпадают. Но это только то, что я думал. Может ли это быть проблемой? Как я могу решить это?

1 Ответ

0 голосов
/ 30 августа 2018

Попробуйте получить List без <double>, потому что Дарт предполагает, что тип внутри List является динамическим и не примитивным, поэтому у вас возникает ошибка, когда вы пытаетесь разобрать List<dynamic> в List<double>.

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

Должно работать.

Не забудьте включить импорт в MainActivity, похоже, вы используете классы Arrays и List, а затем импортировать следующие классы:

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