Language 9 of 10 · Topic 0.3

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.