Variables, final vs const & late Keyword
1Concept
final variables are initialized once at runtime. const variables are canonical compile-time constants. late declares a non-nullable variable initialized lazily before first read.
2Architecture Diagram
const : Evaluated at compile-time (canonicalized in memory) final : Initialized once at runtime late : Non-nullable, initialized lazily on first access
3Code Example
Stage 0 Language Foundations
class DatabaseService {
late final String connectionString;
void init() {
connectionString = 'postgresql://localhost:5432/app';
}
}
void main() {
const appVersion = '3.0.0';
final startedAt = DateTime.now();
final db = DatabaseService();
db.init();
print('App v$appVersion started at $startedAt');
print('DB: ${db.connectionString}');
}4Expected Output
App v3.0.0 started at 2026-08-28 08:30:00.000 DB: postgresql://localhost:5432/app
5Key Takeaways
- ✓Use const for Flutter widget trees to prevent unnecessary widget rebuilds.
- ✓late final fields ensure lazy initialization without nullable boilerplate.
- ✓final fields cannot be reassigned once initialized.