Theming və Material 3
Rənglər və şriftlər widget-lərin içində sabit yazılmamalıdır. Flutter-də mərkəzi yer `ThemeData`-dır: MaterialApp(theme: ...) ilə verilir və bütün ağac boyu Theme.of(context) vasitəsilə oxunur.
Material 3 (Flutter-in müasir defaultu) yanaşmanı sadələşdirir: bir seedColor-dan bütöv, uyğunlaşdırılmış rəng sxemi generasiya olunur:
ColorScheme.fromSeed(seedColor: ...)— açıq və qaranlıq üçün ayrı-ayrıthemevədarkThemeverilir,themeModeisə hansının işlədiyini seçirThemeMode.systemcihazın ayarına tabe olur
| Yanaşma | Nəticə |
|---|---|
| Widget-də `Colors.blue` yazmaq | Dark mode-da oxunmur, brend dəyişəndə hər faylı redaktə etmək lazım gəlir |
| `Theme.of(context).colorScheme.primary` | Hər iki rejimdə düzgün, dəyişiklik tək yerdən |
| `TextStyle(fontSize: 16)` yazmaq | Tipoqrafiya ekranlar arası fərqlənir |
| `Theme.of(context).textTheme.bodyLarge` | Vahid tipoqrafiya, accessibility ayarlarına hörmət |
Interview ipucu. "Dark mode-u necə dəstəkləyirsən?" sualının doğru cavabı "if (isDark) qara rəng verirəm" deyil. Güclü cavab: theme və darkTheme-i ayrıca qururam, themeMode: ThemeMode.system ilə cihaz ayarına tabe oluram, və widget kodunda heç bir sabit rəng olmur — hər şey colorScheme-dən gəlir. Bir addım irəli: ColorScheme.fromSeed ilə kontrast nisbətlərinin avtomatik uyğunlaşdığını qeyd et.
📚 Mənbələr və sənədlər
- Theme-lərdən istifadərəsmidocs.flutter.dev
- ThemeData classrəsmiapi.flutter.dev
- Theme classrəsmiapi.flutter.dev
- Material Designrəsmidocs.flutter.dev