CodeBlanks Logo Icon CodeBlanks

Theme.of

Theme.of(context) ile tema değerlerine erişmeyi öğrenirsin.

Theme.of nedir?

Theme.of(context), o anki bağlamdaki ThemeData'ya erişmeni sağlar. Böylece widget içinde tema renk ve stillerini doğrudan kullanabilirsin. Theme.of(context).colorScheme.primary ile ana renge, Theme.of(context).textTheme.bodyLarge ile de gövde stiline ulaşırsın.

Text(
  'Merhaba',
  style: TextStyle(
    color: Theme.of(context).colorScheme.primary,
  ),
)

Bu yöntem, temayı elle widget'a geçirmeden erişmenin temel yoludur.

colorScheme ve textTheme erişimi

Theme.of(context) ile hem renklere hem metin stillerine erişirsin. Theme.of(context).colorScheme.primary ana rengi, Theme.of(context).textTheme.bodyLarge ise büyük gövde stilini verir. Bu değerleri widget'ların style veya color parametrelerine doğrudan bağlayabilirsin.

final tema = Theme.of(context);
print(tema.colorScheme.primary);
print(tema.textTheme.bodyLarge);

Bu erişim, temayı değiştirdiğinde tüm widget'ların otomatik güncellenmesini sağlar.

Uygulama Theme.of ile renkli yazı

RenkliYazi adında bir StatelessWidget tanımla. build metodu bir Text döndürsün; Text'in style parametresi bir TextStyle alsın ve bu TextStyle'ın color alanı Theme.of(context).colorScheme.primary olsun. main içinde 'hazir' yazdır.

Başlangıç kodu

main.dart
import 'package:flutter/material.dart';

// RenkliYazi StatelessWidget tanımla
// build bir Text döndürsün
// Text'in rengi temadan gelsin

void main() {
  // 'hazir' yazdır
}

Örnek çözüm

main.dart
import 'package:flutter/material.dart';

class RenkliYazi extends StatelessWidget {
  const RenkliYazi({super.key});

  @override
  Widget build(BuildContext context) {
    return Text(
      'Merhaba',
      style: TextStyle(
        color: Theme.of(context).colorScheme.primary,
      ),
    );
  }
}

void main() {
  print('hazir');
}

Beklenen çıktı

hazir

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Theme.of(context) ne döndürür?

  • Bir Widget
  • Bir Future
  • Bir String
  • ThemeData nesnesi Doğru cevap

Açıklama: Theme.of(context) o bağlamdaki ThemeData nesnesini döndürür; böylece colorScheme ve textTheme gibi alanlara erişirsin. Widget, Future ve String ThemeData değildir.

2 Theme.of çağrısı

Soru
color: ____(context).colorScheme.primary,
Cevap
color: Theme.of(context).colorScheme.primary,

Açıklama: Theme.of(context) ile ThemeData'ya erişilir. context.theme, ThemeData.of ve App.theme geçerli metodlar değildir; Flutter'da doğru kullanım Theme.of'dur.

3 Theme.of parçaları

Kavram Anlamı
Theme.of(context) ThemeData'ya erişim
colorScheme renk paleti
primary ana renk
context build bağlamı

Orta seviye bölümündeki tüm dersler