Özet - Hive
- Flutter kursu
- İleri seviye
- Ders 15/69
- 4 dk
Box, put ve TypeAdapter'ı birleştirerek ayar deposu yaparsın.
Ayar deposu
Bir ayar deposu yaparken box, put ve TypeAdapter'ı birleştirirsin. Önce Settings sınıfı için adapter kaydedersin, sonra box açıp ayar nesnesini saklarsın. Uygulama yeniden açıldığında box'tan okuyarak ayarı geri yüklersin.
Hive.registerAdapter(SettingsAdapter());
final box = await Hive.openBox('app_settings');
await box.put('current', Settings('light'));Uygulama Ayar deposu yap
Settings sınıfı tanımla (final String theme). SettingsAdapter yaz: typeId 1, read ve write metodları. Adapter'ı kaydet, Hive'ı başlat, 'app_settings' box'ını aç, 'current' anahtarına Settings('light') koy, değeri al ve theme'i yazdır.
Başlangıç kodu
import 'package:hive/hive.dart';
// Settings sınıfı: final String theme
// SettingsAdapter: typeId = 1
// read ve write metodları
void main() async {
// adapter kaydet
// Hive'ı başlat
// 'app_settings' box'ını aç
// 'current' anahtarına Settings('light') koy
// değeri al ve theme'i yazdır
}Örnek çözüm
import 'package:hive/hive.dart';
class Settings {
final String theme;
Settings(this.theme);
}
class SettingsAdapter extends TypeAdapter<Settings> {
@override
final int typeId = 1;
@override
Settings read(BinaryReader reader) {
return Settings(reader.readString());
}
@override
void write(BinaryWriter writer, Settings obj) {
writer.writeString(obj.theme);
}
}
void main() async {
Hive.registerAdapter(SettingsAdapter());
Hive.init('hive_data');
final box = await Hive.openBox('app_settings');
await box.put('current', Settings('light'));
final settings = box.get('current') as Settings;
print(settings.theme);
await box.close();
}Beklenen çıktı
light
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 TypeAdapter ne zaman kaydedilmelidir?
- Yalnızca hata durumunda
- Özel tip içeren box açılmadan önce Doğru cevap
- Box kapandıktan sonra
- main fonksiyonunun sonunda
Açıklama: Adapter, o tipi kullanan box açılmadan önce kaydedilmelidir; aksi halde Hive tipi tanımaz.
2 Adapter read metodu
Settings read(BinaryReader reader) {
return Settings(reader.____());
}
Settings read(BinaryReader reader) {
return Settings(reader.readString());
}
Açıklama: BinaryReader'ın readString metodu string değerleri okur; adapter read metodunda kullanılır.
3 Ayar deposu parçaları
| Kavram | Anlamı |
|---|---|
Settings |
Ayar modeli |
SettingsAdapter |
Tip çevirici |
'app_settings' |
Box adı |
settings.theme |
Saklanan değer |