Tema kaydetme
- Flutter kursu
- Orta seviye
- Ders 39/99
- 4 dk
Tema tercihini shared_preferences ile kalıcı yapmayı öğrenirsin.
Tema kaydetme
Kullanıcının seçtiği temayı kalıcı yapmak için shared_preferences kullanırsın. Tema adını bir String olarak kaydedersin; uygulama açıldığında okuyup MaterialApp'in themeMode özelliğine verirsin. Böylece kullanıcı her açılışta kendi temasını görür.
await prefs.setString('theme', 'dark');
final theme = prefs.getString('theme') ?? 'light';
// themeMode: theme == 'dark' ? ThemeMode.dark : ThemeMode.light?? ile varsayılan tema
Uygulama ilk açıldığında 'theme' anahtarı henüz yoktur; getString null döner. ?? operatörü ile varsayılan bir değer verirsin. Kullanıcı tema seçtiğinde setString ile kaydeder, sonraki açılışlarda okunan değer kullanılır.
final saved = prefs.getString('theme');
final theme = saved ?? 'light';
print(theme); // 'light' ya da kayıtlı değerUygulama Temayı kaydet ve oku
setString('theme', 'dark') ile temayı kaydet, getString('theme') ?? 'light' ile oku ve print ile bastır.
Başlangıç kodu
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final prefs = await SharedPreferences.getInstance();
// setString ile 'theme' = 'dark' kaydet
// getString ile oku, yoksa 'light' ver
// print ile bastır
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: Scaffold(body: Center(child: Text('tema')));
}
}Örnek çözüm
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final prefs = await SharedPreferences.getInstance();
await prefs.setString('theme', 'dark');
final theme = prefs.getString('theme') ?? 'light';
print(theme);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: Scaffold(body: Center(child: Text('tema')));
}
}Beklenen çıktı
dark
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kayıtlı tema ne zaman okunmalı?
- Yalnızca kullanıcı butona bastığında
- Her build çağrısında
- Uygulama açılırken main içinde Doğru cevap
- Hiçbir zaman, varsayılan yeterli
Açıklama: Tema tercihi uygulama açılırken main içinde okunursa, kullanıcı kendi temasını ilk anda görür; butona basmayı beklemek gerekmez.
2 Tema okurken varsayılan ver
final theme = prefs.getString('theme') ____;
final theme = prefs.getString('theme') ?? 'light';
Açıklama: Anahtar yoksa getString null döner; ?? ile 'light' varsayılan değer verirsin.
3 Tema kalıcılaştırma parçaları
| Kavram | Anlamı |
|---|---|
'theme' |
Anahtar adı |
setString |
Temayı yazar |
getString |
Temayı okur |
themeMode |
MaterialApp özelliği |