👨‍💻
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. if / else
  • 2. Тернарный оператор
  • 3. switch / case
  1. Flutter lessons
  2. Основы dart

03. Условные операторы

Previous02. ФункцииNext04. List

Last updated 6 months ago

Темы:

Условные операторы в программировании — это способы задать программе разные действия в зависимости от условий. Они помогают "проверить" ситуации и сделать правильный выбор, как, например, на развилке дорог: если нам нужно налево, мы идем налево, а если направо — идем направо.

Зачем нужны условные операторы?

Представь, что ты выбираешь, какую обувь надеть. Если на улице дождь, ты выбираешь резиновые сапоги, а если солнечно — кроссовки. Условные операторы помогают программе делать такие же выборы: выполнять одну задачу, если что-то правда, и другую — если нет.

Основные условные операторы в Dart:

  1. if / else

  2. Тернарный оператор

  3. switch / case


1. if / else

if и else позволяют программе проверять, истинно ли условие, и выполнять определенные действия в зависимости от этого.

Аналогия

Представь, что ты решаешь, что надеть:

  • Если на улице тепло, ты надеваешь футболку.

  • Если холодно, надеваешь свитер.

Пример 1 использования if / else в коде

int temperature = 15;

void checkTemperature() {
  if (temperature > 20) {
    print("Надень футболку");
  } else {
    print("Надень свитер");
  }
}

Здесь if проверяет, больше ли температура 20 градусов. Если да, то выводится сообщение “Надень футболку”, если нет — “Надень свитер”.

Пример 2: if / else в Flutter

В этом примере мы проверяем, является ли число четным или нечетным, используя if / else. На экране отображается результат.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: IfElseExample(),
    );
  }
}

class IfElseExample extends StatefulWidget {
  @override
  _IfElseExampleState createState() => _IfElseExampleState();
}

class _IfElseExampleState extends State<IfElseExample> {
  int number = 4;

  String checkEvenOdd(int num) {
    if (num % 2 == 0) {
      return "Четное число";
    } else {
      return "Нечетное число";
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('If/Else Example')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Число: $number'),
            SizedBox(height: 20),
            Text(checkEvenOdd(number), style: TextStyle(fontSize: 24)),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  number++;
                });
              },
              child: Text('Увеличить число'),
            ),
          ],
        ),
      ),
    );
  }
}

Объяснение:

  • Функция checkEvenOdd(int num) проверяет, является ли число четным или нечетным.

  • На экране отображается текущее число и его статус (четное или нечетное).

  • Кнопка "Увеличить число" увеличивает number, и экран обновляется.


2. Тернарный оператор

Тернарный оператор — это сокращенная версия if / else. Он использует ? и : для проверки условия и выполнения действий.

Аналогия

Представь, что ты выбираешь десерт:

  • Если есть пирог, ты его берешь.

  • Если пирога нет, ты берешь мороженое.

Пример 1 использования тернарного оператора в коде

bool hasCake = true;
String dessert = hasCake ? "Пирог" : "Мороженое";
print("Выбранный десерт: $dessert");

Здесь hasCake — это условие. Если оно истинно, выбирается "Пирог", иначе — "Мороженое".

Пример 2: Тернарный оператор в Flutter

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

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: TernaryOperatorExample(),
    );
  }
}

class TernaryOperatorExample extends StatefulWidget {
  @override
  _TernaryOperatorExampleState createState() => _TernaryOperatorExampleState();
}

class _TernaryOperatorExampleState extends State<TernaryOperatorExample> {
  int age = 16;

  String checkAge(int age) => age >= 18 ? "Совершеннолетний" : "Несовершеннолетний";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Ternary Operator Example')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Возраст: $age'),
            SizedBox(height: 20),
            Text(checkAge(age), style: TextStyle(fontSize: 24)),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  age++;
                });
              },
              child: Text('Увеличить возраст'),
            ),
          ],
        ),
      ),
    );
  }
}

Объяснение:

  • Функция checkAge(int age) использует тернарный оператор, чтобы вернуть "Совершеннолетний" или "Несовершеннолетний".

  • На экране отображается возраст и его статус.

  • Кнопка увеличивает возраст, обновляя экран.


3. switch / case

switch / case используется, когда нужно проверить одно и то же значение на несколько возможных вариантов. Он помогает упростить код, если if / else начинает разрастаться.

Аналогия

Представь, что у тебя есть расписание на неделю, и в зависимости от дня недели ты выполняешь разные задачи:

  • В понедельник — тренировка.

  • Во вторник — занятия.

  • В среду — встречи.

Пример использования switch / case в коде

String day = "Понедельник";

void checkSchedule() {
  switch (day) {
    case "Понедельник":
      print("Сегодня тренировка");
      break;
    case "Вторник":
      print("Сегодня занятия");
      break;
    case "Среда":
      print("Сегодня встречи");
      break;
    default:
      print("Свободный день");
  }
}

Здесь switch проверяет значение переменной day и выводит сообщение в зависимости от дня.

Пример 2: switch / case в Flutter

Этот пример показывает дни недели в зависимости от выбранного дня, используя switch / case.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SwitchCaseExample(),
    );
  }
}

class SwitchCaseExample extends StatefulWidget {
  @override
  _SwitchCaseExampleState createState() => _SwitchCaseExampleState();
}

class _SwitchCaseExampleState extends State<SwitchCaseExample> {
  int dayNumber = 1;

  String getDayOfWeek(int day) {
    switch (day) {
      case 1:
        return "Понедельник";
      case 2:
        return "Вторник";
      case 3:
        return "Среда";
      case 4:
        return "Четверг";
      case 5:
        return "Пятница";
      case 6:
        return "Суббота";
      case 7:
        return "Воскресенье";
      default:
        return "Неизвестный день";
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Switch Case Example')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Номер дня: $dayNumber'),
            SizedBox(height: 20),
            Text(getDayOfWeek(dayNumber), style: TextStyle(fontSize: 24)),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  dayNumber = dayNumber < 7 ? dayNumber + 1 : 1;
                });
              },
              child: Text('Следующий день'),
            ),
          ],
        ),
      ),
    );
  }
}

Объяснение:

  • Функция getDayOfWeek(int day) использует switch / case, чтобы возвращать день недели в зависимости от значения dayNumber.

  • На экране отображается номер дня и соответствующее название дня недели.

  • Кнопка "Следующий день" увеличивает номер дня, обновляя экран.


Основные моменты:

  • if / else: проверка условий с двумя вариантами (или больше с else if).

  • Тернарный оператор: короткий способ проверки, подходит для простых условий.

  • switch / case: удобен для множественного выбора, особенно если одно значение может иметь несколько вариантов.

👨‍💻
🧩
🧑‍🏫
Условные операторы
if / else
Тернарный оператор
Switch case