Kodokon kodokon.com

Основы Dart: переменные, функции и null safety

Научись хранить значения в типизированных переменных, писать функции и понимать защиту от null.

10 мин · 3 вопросов

Открыть этот урок в Kodokon

Прежде чем строить экраны, освоим основы Dart - языка Flutter. Переменная - это подписанная коробка в памяти компьютера, в которую ты кладёшь значение, чтобы использовать его позже. В Dart у каждой переменной есть тип: природа того, что она может хранить. Четыре самых частых типа - это int (целое число, например 28), double (десятичное число, например 1.65), String (строка символов, то есть текст в кавычках) и bool (булево значение: либо true, либо false). Ключевое слово var позволяет Dart самому определить тип по тому значению, которое ты передал.

DART
void main() {
  var name = "Camille";
  int age = 28;
  double height = 1.65;
  bool isStudent = true;
  print(name);
  print(age);
  print(height);
  print(isStudent);
}
Объяви четыре переменные и выведи их

print выводит значение в консоль - текстовую область, куда программа пишет свои сообщения: очень удобно, чтобы проверить, что происходит. Чтобы вставить переменную прямо в середину текста, Dart предлагает интерполяцию: поставь символ $ перед именем переменной, прямо внутри строки. Ещё одно полезное ключевое слово, final, объявляет переменную, которая больше никогда не изменится после получения первого значения: используй его сразу, как только значение не должно меняться.

DART
void main() {
  final city = "Lyon";
  var temperature = 21;
  print("In $city, it is $temperature degrees.");
}
Интерполяция вставляет переменные в текст

Функция - это небольшой переиспользуемый блок кода, у которого есть имя, который может принимать параметры (входные значения, в круглых скобках) и возвращать результат с помощью ключевого слова return. Объявляя её, ты пишешь сначала тип результата, затем имя, затем параметры. Тип void означает "ничего не возвращает": именно так устроена main, точка входа программы.

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

String greet(String name) {
  return "Hello, $name!";
}

void main() {
  print(add(2, 3));
  print(greet("Nadia"));
}
Две функции: одна возвращает число, другая текст

Последнее ключевое понятие: null safety. null - это особое значение, которое означает "ничего, никакого значения". Забытые null исторически были одной из главных причин падения приложений. Dart защищает тебя: по умолчанию переменная не может содержать null. Чтобы разрешить это явно, добавь к типу вопросительный знак: String? читается как "строка символов или ничего". Оператор ?? затем подставляет запасное значение, которое используется только если переменная равна null.

DART
void main() {
  String? nickname;
  print(nickname ?? "No nickname yet");
  nickname = "Momo";
  print(nickname);
}
? разрешает null, ?? подставляет запасное значение

Проверка знаний

Убедись, что запомнил ключевые моменты этого урока.

  1. Какой тип Dart подходит для хранения true или false?
    • int
    • String
    • bool
    • double
  2. Что означает объявление String? nickname?
    • Переменная nickname может содержать текст или null
    • Переменная nickname обязательна и должна быть заполнена
    • Компилятор должен угадать тип nickname
  3. С кодом int add(int a, int b) { return a + b; } что выведет print(add(2, 3))?
    • 2 + 3
    • 5
    • Ошибку компиляции