TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #284 804
🔴Привет! Это Анна, Flutter Team Lead Friflex

Роза уже рассказывала о модификаторах классов. Сегодня поговорим о еще одной базовой базе для любого Flutter-разработчика — модификаторах переменных в Dart.

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

var
Этот модификатор является одним из наиболее часто используемых. Он заставляет переменную получить и зафиксировать тип данных при первом присвоении.

var data = 'Привет! Это строка'; // в момент присвоения data получит тип      String
data = 'А теперь это другая строка!'; // поменять значение на другое такого же типа можно ✅
data = 123; // а вот на значение другого типа нельзя! ❌


final
Еще один распространенный модификатор. Он говорит о том, что переменной можно присвоить значение только один раз. Последующие изменения невозможны.

final data = DateTime.now(); // задаем начальное значение ✅
data = DateTime.now().add(const Duration(days: 1)); // из-за final при объявлении заменить значение не получится! ❌


const
Это ключевое слово фиксирует значение, присваиваемое переменной. Как и в случае с final, изменить его не получится. Но есть важное отличие от final — const-переменная инициализируется в момент компиляции программы, поэтому присвоить ей значение, получаемое в рантайме, не получится.

const data = 'Привет! Это строка'; // задаем значение известное при компиляции ✅
data = 'А теперь это другая строка!'; // обновить значение нельзя! ❌
const data2 = DateTime.now(); // как и задать значение, которое будет получено только в рантайме! ❌


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

abstract class AbstractExample {
static String value = 'Это значение static переменной';
}

void main() {
print(AbstractExample.value); // выведет в консоль сообщение – Это значение static переменной ✅
AbstractExample.value = 'А это новое значение!';
print(AbstractExample.value); // выведет в консоль сообщение – А это новое значение! ✅
}


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

late String name;

void printName() {
print(name); // получим ошибку, так как значение еще не задано! ❌
}

void printNameSafe() {
name = 'Anna';
print(name); // будет выведено в консоль — Anna ✅
}


Самое интересное, модификаторы переменных можно и нужно комбинировать! Это позволит вам сделать код максимально безопасным, исключить возможность ненужных обновлений данных и оптимизировать вашу программу.

Например:
late final — дает возможность инициализировать переменную позже, но запрещает изменение
static const — создает константу класса в момент компиляции

Но тут важно, что некоторые модификаторы друг другу противоречат, поэтому комбинировать их не получится. Например, const и late.

❤️ — если было полезно
  • ❤ 23
  • 🔥 5
  • 👎 2
  • 🎅 2
  • 🏆 1
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →