CodeBlanks Logo Icon CodeBlanks

Özet - Hive

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

main.dart
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

main.dart
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

Soru
Settings read(BinaryReader reader) {
  return Settings(reader.____());
}
Cevap
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

İleri seviye bölümündeki tüm dersler