Ответ
В 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. Этот подход удобен для инъекции зависимостей или ленивой инициализации.