1. Почему это не сработает
Если все, что вам нужно, это добавить список в Row
, вы должны создать список и затем инициализировать Row
. Вы не можете добавить список позже, потому что виджеты Flutter обычно имеют final
поля / свойства, которые нельзя изменить во время выполнения.
2. The Flutter Way
Однако, что вы можете сделать для динамического изменения списка, это передать функцию, которая строит ваш список во время выполнения. И это именно то, что делает ListView.builder()
конструктор ListView
.
Например, этот пример документа для динамического создания List
из Container
s на основе List
s entries
и colorCodes
.
final List<String> entries = <String>['A', 'B', 'C'];
final List<int> colorCodes = <int>[600, 500, 100];
ListView.builder(
padding: const EdgeInsets.all(8),
itemCount: entries.length,
itemBuilder: (BuildContext context, int index) {
return Container(
height: 50,
color: Colors.amber[colorCodes[index]],
child: Center(child: Text('Entry ${entries[index]}')),
);
}
);
Вы можете добавить кнопку к .add
, скажем, к буквам D
и colorCode
400
, к соответствующим List
с, и Флаттер будет динамически отображать соответствующие Container
с на экране.