#flutter #dart
#flutter #dart
Вопрос:
Прошла неделя с тех пор, как я начал с dart, я пытаюсь построить диаграмму, которая принимает List double в качестве входных данных. Я извлекаю данные из api и помещаю выбранный массив в список, который я объявил. Список aqis; // объявление списка aqis = mapResponse[‘aqi_predictions’]; //хранение значений api
Я получаю эту ошибку
convert List<dynamic> is not a subtype of type List<double>
any possible way to convert this list<dynamic> to list<double>
Комментарии:
1. я пробовал это, но сохраняется та же ошибка doubleList = aqis.map((s) => s как double). ToList();
Ответ №1:
Поехали!
Это решение работает для более сложных динамических значений в списке, таких как [1.1, '3', 3, '4.4']
double
List
void main() {
List<dynamic> d = [1.1, '3', 3, '4.4'];
print('Dynamic list: ' d.toString());
List<double> dList = [];
for(var v in d){
String s = v.toString();
dList.add(double.parse(s));
}
print('Double list: ' dList.toString());
}
Вывод:
Dynamic list: [1.1, 3, 3, 4.4]
Double list: [1.1, 3, 3, 4.4]
Ответ №2:
Допустим, у вас есть
List<dynamic> dynamicList = [1.0,2.0,3.0];
И если бы вы попытались присвоить ему значение double, это было бы:
List<double> castedList = dynamicList.cast<double>();
Или
List<double> castedList = dynamicList.map((element)=>element).cast<double>().toList();
Для нечистого списка, где вам нужно разобрать double из строки:
List<double> castedList = dynamicList.map((element)=>double.parse(element.toString())).toList();
Комментарии:
1. Ваш
List<double> castedList = dynamicList.cast<double>();
метод не сработает, если список будет более сложным, например[1, 2.2, '3.3']
2. Теперь последний делает.
3. Но вы должны указать в своем ответе правильно?
Ответ №3:
Вы можете преобразовать list
из dynamic в double
, повторив все элементы и typecasting
их в double .
Этот следующий код отлично работал для меня,
List<dynamic> x = [2.2, 3.4, 5, 10.2];
List<double> y = [];
x.forEach((element) {
y.add(element.toDouble());
});
Если входной список является динамическим, например [1.1, ‘3’, 3, 4] имея разные типы, затем используйте:
List<dynamic> x = [2.2, 3.4, "5", 10.2];
List<double> y = [];
x.forEach((element) {
y.add(double.parse(element.toString()));
});
Комментарии:
1. это неправильный ответ для динамического списка, такого как
[1.1, '3', 3, 4]
2. если вы хотите преобразовать строку в double, вам нужно проанализировать элементы, для такого списка используйте этот фрагмент x.forEach((элемент) { y.add(double.parse(элемент. toString())); });
3. да, я знаю. вот почему я сказал это в комментарии для пояснения.