У меня есть ситуация, когда у меня есть список, который может состоять не более чем из 4 элементов.
Однако, если у меня есть только 1-3 элемента для добавления в этот список, как я могу заполнить остальные нулевыми значениями?
Например, List<int?> длины 4 с двумя заданными элементами должен привести к следующему результату:
[1,3] -> [1,3,null,null]
Вот что я делаю, но, может быть, есть лучший способ
List.generate(4, (index) {
try {
final id = given.elementAt(index);
return id;
} catch (error) {
return null;
}
});
Самый простой вариант, вероятно, будет:
[for (var i = 0; i < 4; i++) i < given.length ? given[i] : null]
Вы можете использовать List.generate
, но в этом случае функция достаточно проста, чтобы литерал списка мог делать то же самое более эффективно.
(Или, как говорит @jamesdlin, если вам нужен список фиксированной длины, используйте List.generate
).
Более косвенным вариантом может быть:
List<GivenType?>.filled(4, null)..setAll(0, given)
где вы сначала создаете список из четырех null
, а затем записываете в него список given
. Вероятно, это просто сложнее и менее эффективно.
Лично я бы использовал
if (index < given.length)
вместо использования исключений для потока управления, и если вам нужен фиксированный размерList
, вы должны использоватьList.generate(..., growable: false)
, но в остальном этот подход мне кажется приемлемым.