Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗flPmCdCF 46 of 125 menu
◀ ▶

Цикл for в списке потомков в Flutter

Если однотипные элементы нужно повторить много раз, список children можно наполнить циклом for прямо в литерале - это collection for. Каждая итерация добавляет один или несколько виджетов в Column или Row без отдельного метода и без мутации списка:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: HomePage())); } class HomePage extends StatelessWidget { const HomePage({super.key}); @override Widget build(BuildContext context) { const labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']; return Scaffold( body: Center( child: Row( mainAxisSize: MainAxisSize.min, children: [ for (final label in labels) Padding( padding: const EdgeInsets.symmetric(horizontal: 6), child: Text(label), ), ], ), ), ); } }

Работают и классические циклы с индексом: for (var i = 0; i < n; i++). Удобно нумеровать строки или брать данные из списка по позиции. Переменные цикла должны быть локальными в build или полями виджета - не забывайте, что при будущем setState изменение данных потребует нового build:

Column( children: [ for (var i = 1; i <= 5; i++) Text('Item $i'), ], )

Цикл collection for можно комбинировать с collection if в одном списке: сначала фиксированные потомки, затем цикл, затем условный хвост. Порядок в литерале - это порядок на экране:

children: [ const Text('Total'), for (final n in [3, 7, 9]) Text('· $n'), ]

В Column выведите заголовок 'Grades', затем через for пять строк 'Lesson 1' … 'Lesson 5' (номер подставьте из цикла). Без ручного копирования пяти Text.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить