Skip to content
Kezdőlap » App stílus (theme) használata Widgetekben

App stílus (theme) használata Widgetekben

Vannak esetek, amikor az app theme-t, (az alkalmazás egészére vonatkozó stílust) szeretnénk használni, beépített és / vagy saját widgetekben. Ugyanakkor a téma bizonyos részeit felülírjuk saját stílusokkal.

„Manuális” stílus

Például adva vagyon egy cím, ami eddig a kódban így nézett ki:

Text(expense.title),

A képernyőn pedig Ő lenne az:

Card címe

Tehát egy Card widget címét akarjuk megformázni, ami pedig egy Text widget.

Ha manuálisan szeretnénk stílust adni a szöveghez, akkor ezt a style tulajdonságon keresztül a TextStyle() megadásával tehetnénk meg:

Text(expense.title, style: TextStyle()),

Téma használata

De, ha már van az appnak stílus témája, akkor miért ne használnánk azt?

Text(expense.title, style: Theme.of(context))

A Theme.of() metódust kell használni, ami értékként a context-et várja. Ezen a context objektumon keresztül a Flutter hozzá tud férni Theme beállításokhoz.

És aztán ezen a „téma objektumon” keresztül, amit a context ad nekünk már hozzá tudunk férni a téma különböző részeihez, mint például a textTheme:

Text(expense.title, style: Theme.of(context).textTheme),

Ezzel hozzáférünk a textTheme alapbeállításaihoz is, valamint azokhoz a beállításokhoz, amikez mi egyénileg állítottunk be korábban:

textTheme: ThemeData().textTheme.copyWith(
      titleLarge: TextStyle(
        fontWeight: FontWeight.bold,
        color: kColorScheme.onSecondaryContainer,
        fontSize: 16,
      ),
    ),

Ennek megfelelően használni tudjuk a titleLarge stílusát:

Text(expense.title, style: Theme.of(context).textTheme.titleLarge),

Témabeállítások finomhangolása

A lehetőségek határa szinte a csillagos ég. Ugyanis nem csak arra van lehetőség, hogy használjuk a téma valamely részét, mint például itt:

color: Theme.of(context).colorScheme.error,

Hanem azt is megtehetjük, hogy ezt tovább finomítjuk, állítjuk. Az error ugyanis támogat további tulajdonságokat és metódusokat:

error metódusai

Ha például azt akarjuk, hogy a témában létrehozott (egészen pontosan a Flutter által a színfalak mögött a seedColor alapján automatikusan generált) error szín némi átlátszósággal jelenjen meg, akkor a withOpacity() metódust kell használni:

color: Theme.of(context).colorScheme.error.withOpacity(0.75),

Vagy egy másik példa, folytatva a Text widget stílusának finomhangolását. Ott ugyebár a témából a titleLarge-ot használtuk:

Text(expense.title, style: Theme.of(context).textTheme.titleLarge),

De megtehetjük azt is, hogy ennek a szövegnek beállítunk egy másik színt is. Ehhez a copyWith() metódust kell használni, amin keresztül aztán elérhetővé válik számtalan beállítás:

copyWith
style: Theme.of(context).textTheme.titleLarge!.copyWith(color: Colors.red),

És az eredmény:

cím piros

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük