Установка литералов не поддерживалась до 2.2, Как установить литералы после Dart 2.2.Пожалуйста, не стесняйтесь комментировать.Спасибо.
class item_t {
String name;
int weight;
int value;
}
main() {
const List<item_t> items = [
{'map', 9, 1}, // reports errors
];
}
обновление 1
Я мог бы определить список как серию определений операторов.Однако кажется, что это неэффективно.
class item_t {
String name;
int weight;
int value;
}
main() {
// final item_t items = new item_t(100);
List<item_t> items = new List(2);
items[0].name = 'map';
items[0].weight = 9;
items[0].value = 1;
}
На языке C я могу эффективно определить структуру, но я не знаю, как это сделать в дротике.
typedef struct {
char *name;
int weight;
int value;
} item_t;
item_t items[] = {
{"map", 9, 150},
{"compass", 13, 35},
{"water", 153, 200},
};
обновление 2
Спасибо, что посоветовал jamesdlin, я могу упростить инициализацию списка и получить доступ к элементу по индексу.Тем не менее, он по-прежнему не может быть столь же эффективным, как язык C.
var mySet = [
{"map", 9, 150},
{"compass", 13, 35},
{"water", 153, 200},
{"sandwich", 50, 160},
{"glucose", 15, 60},
{"tin", 68, 45},
{"banana", 27, 60},
{"apple", 39, 40},
{"cheese", 23, 30},
{"beer", 52, 10},
{"suntan cream", 11, 70},
{"camera", 32, 30},
{"T-shirt", 24, 15},
{"trousers", 48, 10},
{"umbrella", 73, 40},
{"waterproof trousers", 42, 70},
{"waterproof overclothes", 43, 75},
{"note-case", 22, 80},
{"sunglasses", 7, 20},
{"towel", 18, 12},
{"socks", 4, 50},
{"book", 30, 10}
];
print(mySet[0].elementAt(1));