В чем разница между var и String в Dart?

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

Ответ

var — это ключевое слово для объявления переменной с выводом типа. Тип переменной определяется компилятором на основе присвоенного значения и затем фиксируется.

String — это конкретный явный тип данных, представляющий строку текста.

// Использование var - тип выводится как String
var message = 'Hello, Flutter!'; // Тип: String
message = 'Updated text'; // OK
// message = 42; // Ошибка компиляции: тип уже String, нельзя присвоить int

// Использование явного типа String
String title = 'My App'; // Тип явно указан
title = 'New Title'; // OK
// title = 100; // Ошибка компиляции: int не может быть присвоен String

// Особенность var с динамическим типом
var dynamicValue; // Тип выводится как dynamic, если нет инициализатора
dynamicValue = 'Text'; // OK
dynamicValue = 123; // OK - тип dynamic позволяет это

Когда что использовать:

  • var — для локальных переменных, когда тип очевиден из контекста, что улучшает читаемость кода.
  • String (явный тип) — для полей класса, параметров методов, возвращаемых значений, когда требуется явная документация типа или для публичного API.

Важно: В Dart var не создает динамически типизированную переменную (как dynamic). После вывода типа переменная становится строго типизированной.