TGViewer
Сёрф Flutter-разработка Сёрф Flutter-разработка @surf_flutter · 3.21K subscribers
Post #135 1.3K
Маленькая «неожиданность» с массивами, или как вместо 24 значений в каждом массиве получилось 168 🙄

Что случилось
Нужно было посчитать средние значения в каждый час каждого дня недели. А затем собрать их в массив массивов, где массив представляет собой день недели, заполненный средними значениями за каждый час. То есть
List<List<double>>
.

Чтобы не заниматься преждевременной сортировкой, решил результирующий массив проинициализировать так: 

final valuesPerWeekday = List.filled(7, <double>[])


и заполнять уже в формате 

valuesPerWeekday[weekday].add(avgValue)
.

Каково было удивление, когда вместо 24 значений в каждом массиве я обнаружил 168 😱

В чём подвох
Открываем документацию к конструктору List.filled и читаем:
/// All elements of the created list share the same [fill] value


Так как массивы, да и вообще списочные типы, передаются по ссылке, получаем полный 🥴, когда натыкаемся на непредвиденные результаты.

Выводы
1️⃣ Читайте внимательно документацию к тому, что используете, и не повторяйте моих ошибок.
2️⃣ Пишите документацию на свои реализации сполна. Обязательно подсвечивайте неочевидные кейсы, чтобы потом волосы на голове не вырывать.
3️⃣ Используйте
List.generate(length, (index) => <double>[])
для таких генераций: на каждый индекс создастся уникальный объект.
  • 👍 17
  • 🤔 10
  • 🔥 8
  • ❤‍🔥 2
  • 😁 2
More from @surf_flutter
  1. Aug 20, 2026🐦 Ищем Flutter-разработчика нового поколения. Если ты активно работаешь с AI-агентами, ис…
  2. Aug 18, 2026🧸 Продолжаем серию постов «Флаттер для самых маленьких». В новой части поговорим про меха…
  3. Aug 7, 2026🐳 Экран во Flutter держится на трёх китах, и если разобраться в их взаимодействии, рендер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →