Что такое анонимные функции в Dart?

«Что такое анонимные функции в Dart?» — вопрос из категории Dart Core, который задают на 29% собеседований Flutter Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Анонимные функции (лямбда-функции или лямбда-выражения) в Dart — это функции без имени, объявляемые непосредственно в месте использования. Они особенно полезны для коротких операций, передаваемых в качестве аргументов (коллбэков) в методы коллекций, виджетов или таймеров.

Основные особенности:

  • Не имеют имени, объявляются через (параметры) { тело } или стрелочный синтаксис (параметры) => выражение.
  • Имеют доступ к переменным из окружающей лексической области видимости (замыкание).
  • Часто используются с forEach, map, where, reduce, Future.then, GestureDetector.onTap и другими API.

Примеры использования:

void main() {
  // Пример 1: Анонимная функция как аргумент forEach
  var numbers = [1, 2, 3];
  numbers.forEach((number) {
    print(number * 2);
  });

  // Пример 2: Стрелочный синтаксис для однострочных выражений
  var doubled = numbers.map((n) => n * 2).toList();
  print(doubled); // [2, 4, 6]

  // Пример 3: Сохранение в переменную
  var greet = (String name) => 'Hello, $name!';
  print(greet('Flutter')); // Hello, Flutter!

  // Пример 4: Использование в Flutter-виджете (коллбэк)
  // ElevatedButton(
  //   onPressed: () { // Анонимная функция
  //     print('Button pressed!');
  //   },
  //   child: Text('Press me'),
  // )
}

Использование анонимных функций делает код более компактным и локализует логику, которая не требует отдельного именованного объявления.