Как объявить non-nullable переменную в Dart и установить для неё значение?

«Как объявить non-nullable переменную в Dart и установить для неё значение?» — вопрос из категории Dart Core, который задают на 29% собеседований Flutter Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Dart с включённой null-безопасностью non-nullable переменная должна быть гарантированно инициализирована до первого использования. Основные способы:

1. Инициализация при объявлении:

int counter = 0;
final String appName = 'MyFlutterApp';
const double pi = 3.14159;

2. Инициализация через параметры конструктора:

class UserProfile {
  final String uid;
  final String email;

  UserProfile(this.uid, this.email); // Поля инициализируются при создании экземпляра
}

3. Поздняя инициализация с late: Используется, когда значение станет известно позже, но до обращения к переменной.

late final ApiService _apiService;

void initializeApp() {
  _apiService = ApiService(); // Должно быть выполнено до любого использования _apiService
}

Важно: Попытка чтения late-переменной до её инициализации вызовет LateInitializationError. Этот подход удобен для инъекции зависимостей или ленивой инициализации.