#flutter #dart
Вопрос:
У меня есть такой необработанный список:
var listRaw = [
{
"listName": "listA",
"listValue": [1, 2, 3]
},
{
"listName": "listB",
"listValue": [4, 5, 6]
},
{
"listName": "listC",
"listValue": [7, 8, 9]
}
];
и пустые списки, подобные этому:
List<int> listA = [];
List<int> listB = [];
List<int> listD = [];
List<List<int>> listFilled = [listA, listB, listD];
Как я могу получить имена пустых списков в качестве условия для добавления listVaule
в listRaw
них, если имя пустого списка == listName
? => >тогда listFilled
будет результат [[1,2,3], [4,5,6], []]
Так что, пожалуйста, помогите мне, это мой код до сих пор
void main() {
var listRaw = [
{
"listName": "listA",
"listValue": [1, 2, 3]
},
{
"listName": "listB",
"listValue": [4, 5, 6]
},
{
"listName": "listC",
"listValue": [7, 8, 9]
}
];
List<int> listA = [];
List<int> listB = [];
List<int> listD = [];
List<List<int>> listFilled = [listA, listB, listD];
listRaw.forEach((r) {
listFilled.forEach((f) {
if (r['listName'] == ___ ) { // How to get name of (f)
f.addAll(r['listValue']);
}
});
});
print(listFilled); // want result: [[1,2,3], [4,5,6], []]
}
Комментарии:
1. ввод
listA
,listB
иlistD
вlistFilled
добавит только элементы этих трех списковfilledList
, а не его название.
Ответ №1:
Имена переменных, которые вы используете, предназначены для того, чтобы вы понимали, для чего используется переменная. Компилятор не знает, как вы их назвали. Он знает только, что эта переменная указывает на определенную точку памяти.
Тем не менее, все, что вы можете сделать, это создать свой собственный подкласс List
класса, к которому будет прикреплено имя. Таким образом, вы можете проверить название списка, когда захотите его сравнить. Ваш подкласс должен быть примерно таким
Это не точный синтаксис. Просто обзор того, что нужно сделать.
class MyNamedList extends List {
String name;
MyNamedList(String name) {
this.name = name;
}
}
//You can check for name like this
if (r['listName'] == myNamedListObj.name)
Ответ №2:
var listRaw = [
{
"listName": "listA",
"listValue": [1, 2, 3]
},
{
"listName": "listB",
"listValue": [4, 5, 6]
},
{
"listName": "listC",
"listValue": [7, 8, 9]
}
];
это список карт<Строка, динамическая>
итак,что вам нужно сделать,это создать пустой список<Карта<Строка, динамическая><Строка, динамическая>>
List<Map<String,dynamic>> list = List.empty(growable:true);//set false if size is fixed.
Затем List<List<Map<String,dynamic>>> listFilled = [list1,list2,list3];