👨‍💻
Flutter
  • 👨‍💻Flutter lessons
    • 🎨Flutter ui
      • 🚵‍♂️Travel app
        • 📱1. Lesson
        • 📱2.Lesson
      • 📚Books store
      • 🧑‍⚕️Doctor app
      • 🚖Taxi app
    • 🐦Основы Flutter
      • Page 1
      • Page 2
      • 🧑‍🏫Урок 1: Основные виджеты Flutter
        • Page
        • 🧩Container()
        • 🧩AppBar()
        • 🧩Text()
        • 🧩Icon()
        • 🧩Column()
        • 🧩Row()
        • 🧩TextButton()
        • 🧩ElevatedButton()
      • 🧑‍🏫Урок 2: Создаем UI
      • 🧑‍🏫Урок 3: Создаем UI
      • 🧑‍🏫Урок 4: Создаем UI
    • 🧩Основы dart
      • 🧑‍🏫01. Переменные часть 1
      • 🧑‍🏫01. Переменные часть 2
      • 🧑‍🏫02. Функции
      • 🧑‍🏫03. Условные операторы
      • 🧑‍🏫04. List
      • 🧑‍🏫05. Map
      • 🧑‍🏫06. Class
      • 🧑‍🏫07. Наследование
      • 🧑‍🏫08. Абстракция
      • 🧑‍🏫09. Интерфейсы
      • 🧑‍🏫10. Инкапсуляция
      • 🧑‍🏫11. Mixin
      • 🧑‍🏫12. Асинхронное программирование
      • 🧑‍🏫13. Streams
      • 🎯Final project
        • 🥦Grocery app
        • 🏠Home
    • ⚒️State management
      • ⬛Bloc
        • 1. Введение cubit
          • 1.1 Пример
          • 1.2 Пример
          • 1.3 Пример
          • 1.4 Пример
          • 1.5 Пример
        • 2. Введение в Bloc
      • 🌊Riverpod
    • 🏠Architechture
      • Clean Architechture
      • Bloc
    • 📲Locale storage
      • 🐝Hive
        • 🐝Ui
        • 🐝Hive - локальное хранилище: Введение
        • 🐝Hive - task app: часть 1
        • 🐝Hive - task app: часть 2
        • 🐝Hive - task app: часть 3
        • 🐝Hive - task app: часть 4
        • 🐝Hive - task app: часть 5
      • 🟩Sql
    • 📡Server
      • 📡Server - Lesson01 introduction
      • 📡Server - Lesson02 get data
      • 📡Server - Lesson03 News App get data
    • 🖥️Готовый backend
      • Firebase
      • Supabase
  • 🎯Dart practise
    • 🧑‍💻Переменные
      • 🧑‍💻String
      • 🧑‍💻int
      • 🧑‍💻double
      • 🧑‍💻bool
    • 🧑‍💻Функции
      • 🧑‍💻Обычные функции
      • 🧑‍💻Порядковые параметры
      • 🧑‍💻Обязательные параметры
      • 🧑‍💻Параметры по умолчанию
      • 🧑‍💻Функции-стрелки
      • 🧑‍💻Возвращаемые функции
    • 🧑‍💻Условные операторы
      • 🧑‍💻if/else
      • 🧑‍💻switch/case
      • 🧑‍💻тернарный оператор
    • 🧑‍💻Структура данных
      • 🧑‍💻List
      • 🧑‍💻Map
      • 🧑‍💻Set
    • 🧑‍💻ООП
  • 🧩Flutter Widgets
    • 💻Все виджеты
    • 🎞️Анимации
      • 🧩AnimatedContainer
      • 🧩AnimatedOpacity
      • 🧩AnimatedAlign
      • 🧩AnimatedCrossFade
      • 🧩Hero
      • 🧩AnimatedBuilder
      • 🧩AnimatedPositioned
      • 🧩AnimatedSwitcher
    • 🏗️Манипуляция пространством
      • 🧩Padding
      • 🧩SizedBox
      • 🧩Align
      • 🧩Center
      • 🧩Expanded
      • 🧩Flexible
      • 🧩Spacer
      • 🧩Column
      • 🧩Stack
      • 🧩Row
    • ✍️Отображение текста
      • 🧩RichText
      • 🧩FittedBox
      • 🧩SelectableText
      • 🧩Text
    • 📸Отображение изображений
      • 🧩Image()
      • 🧩Image.network
      • 🧩Image.asset
      • 🧩Image.file
      • 🧩Image.memory
      • 🧩FadeInImage
      • 🧩NetworkImage
      • 🧩AssetImage
    • 📃Списки и прокрутка
      • 🧩ListView()
      • 🧩ListView.builder()
      • 🧩GridView()
      • 🧩GridView.builder()
      • 🧩PageView()
      • 🧩SingleChildScrollView
      • 🧩CustomScrollView
      • 🧩ReorderableListView
      • 🧩NestedScrollView
    • ⌨️Кнопки
      • 🧩TextButton()
      • 🧩ElevatedButton()
      • 🧩IconButton()
      • 🧩DropDownButton()
      • 🧩FloatingActionButton
      • 🧩Checkbox
      • 🧩Radio
      • 🧩Switch
      • 🧩Slider
    • 📝Формы и ввод данных
      • 🧩TextField()
      • 🧩TextFormField
      • 🧩Form
      • 🧩FormField
      • 🧩DatePicker
      • 🧩TimePicker
    • 🧑‍🏫Диалоги и всплывающие окна
      • 🧩AlertDialog
      • 🧩SimpleDialog
      • 🧩BottomSheet
      • 🧩ExpansionPanel
      • 🧩SnackBar
      • 🧩PopupMenuButton
      • 🧩Tooltip
      • 🧩Dialog
    • 🛣️Навигация
      • 🧩BottomNavigationBar()
      • 🧩Navigator
      • 🧩Drawer
      • 🧩TabBar
    • 📱Отображение на экране
      • 🧩Scaffold
      • 🧩Container()
      • 🧩AppBar()
      • 🧩Icon()
      • 🧩Stepper()
  • 🎮Flutter Flame
    • Введение в разработку игр
  • 🔬Flutter projects
  • 🧑‍🎓Homeworks for everyday
    • 🧑‍🎓0. Переменные
    • 🧑‍🎓1. Функции - 1
    • 🧑‍🎓2. Функции - 2
    • 🧑‍🎓3. Условные операторы
    • 🧑‍🎓4. List
    • 🧑‍🎓5. Map
    • 🧑‍🎓6. class
    • 🐝Hive -
    • 🐝Hive clean architecture
    • 📡HTTP
    • 📡HTTP clean architecture
    • 💾Firebase
    • 💾Firebase clean architecture
Powered by GitBook
On this page
  1. Dart practise

Функции

Функции в Dart (и вообще в программировании) — это ключевые блоки кода, которые помогают организовать, структурировать и многократно использовать логику. Чтобы понять функции, можно представить их как инструменты, которые делают одну конкретную задачу — например, как кофемашину, которая готовит кофе каждый раз, когда мы нажимаем кнопку.

Зачем нужны функции?

Функции позволяют:

  1. Переиспользовать код: Вы пишете один раз, а потом используете столько раз, сколько нужно.

  2. Упрощать логику: Вместо длинного кода можно разбить проект на функции, каждая из которых решает конкретную задачу.

  3. Организовывать код: Функции делают программу более понятной и организованной, разделяя задачи.

  4. Сокращать количество ошибок: Если логика разделена по функциям, легче найти и исправить ошибки в коде.

Основные элементы функций

  1. Имя функции — для удобства использования. Например, makeCoffee — чтобы понимать, что эта функция делает.

  2. Параметры (аргументы) — данные, которые функция получает и обрабатывает. Например, milkAmount и sugarAmount для функции makeCoffee.

  3. Тело функции — само действие, выполняемое функцией.

  4. Возвращаемое значение — результат работы функции.

Основные типы функций в Dart

1. Простая функция

Это базовая функция, которая выполняет действия и может возвращать результат.

int add(int a, int b) {
  return a + b;
}

void main() {
  int result = add(3, 4); 
  print(result); // Вывод: 7
}

Аналогия: Представьте, что это калькулятор, который складывает два числа.

2. Функция с обязательными параметрами

Параметры — это данные, которые мы передаем функции, чтобы она могла использовать их в своей работе. Когда функция требует обязательных параметров, она ожидает их обязательно.

void greet(String name) {
  print("Привет, $name!");
}

void main() {
  greet("Алиса"); // Вывод: Привет, Алиса!
}

Аналогия: Как при заказе пиццы: вы должны указать, какую именно пиццу хотите заказать.

3. Функция с именованными параметрами

Иногда мы хотим иметь более гибкие параметры, чтобы можно было задавать их в любом порядке.

void greet({required String name, int age = 0}) {
  print("Привет, $name! Тебе $age лет.");
}

void main() {
  greet(name: "Боб", age: 30); // Вывод: Привет, Боб! Тебе 30 лет.
  greet(name: "Алиса"); // Вывод: Привет, Алиса! Тебе 0 лет.
}

Аналогия: Представьте, что вы заказываете бутерброд, где сами выбираете ингредиенты: сыр, помидор, салат. Эти ингредиенты можно положить в любом порядке.

4. Функция с параметрами по умолчанию

Такая функция имеет значения, которые используются, если параметр не передан.

void greet(String name, [int age = 0]) {
  print("Привет, $name! Тебе $age лет.");
}

void main() {
  greet("Чарли", 25); // Вывод: Привет, Чарли! Тебе 25 лет.
  greet("Дана"); // Вывод: Привет, Дана! Тебе 0 лет.
}

Аналогия: Это как выбор соуса в ресторане: если вы не уточнили, то вам принесут соус по умолчанию.

5. Асинхронные функции

Асинхронные функции позволяют выполнять долгие операции, не блокируя основную программу. Асинхронность позволяет "ждать" результат, но при этом продолжать работу над другими задачами.

Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2));
  return "Данные загружены";
}

void main() async {
  String data = await fetchData();
  print(data); // Вывод: Данные загружены
}

Аналогия: Представьте, что вы ставите воду на плиту, чтобы вскипятить. В это время вы можете заняться другими делами, пока вода закипает, и не стоять просто так.

6. Функции-стрелки (Arrow Functions)

Такие функции используются для краткой записи простых действий.

int multiply(int a, int b) => a * b;

void main() {
  print(multiply(3, 4)); // Вывод: 12
}

Аналогия: Это как сделать заметку о важном на стикере. Выражение короткое, но ясно, что оно обозначает.

7. Функции как объекты

В Dart функции можно передавать как аргументы другим функциям или присваивать переменным.

void executeFunction(Function func) {
  func();
}

void sayHello() {
  print("Привет!");
}

void main() {
  executeFunction(sayHello); // Вывод: Привет!
}

Аналогия: Представьте, что вы можете передать задачу другому человеку, который выполнит её за вас.

Основные моменты для запоминания

  • Переиспользование: Функции помогают повторно использовать один и тот же код, что экономит время и делает код более чистым.

  • Параметры: Параметры позволяют сделать функции гибкими. Например, вы можете передать имена, числа и даже другие функции.

  • Асинхронность: Асинхронные функции помогают управлять долгими операциями, не задерживая основную программу.

  • Тип возвращаемого значения: Dart позволяет указать, какой тип данных возвращает функция, что помогает избежать ошибок.

Заключение

Функции — это основной инструмент в Dart для организации кода, оптимизации и структурирования приложений. Как и с кофемашиной, мы можем многократно использовать функции, просто передавая нужные параметры, чтобы они выполняли нужные действия.

Читать более детально:

PreviousboolNextОбычные функции

Last updated 6 months ago

🎯
🧑‍💻
Обычные функции
Порядковые параметры
Обязательные параметры
Параметры по умолчанию
Функции стрелки
Возвращаемы функции