TypeAdapter
- Flutter kursu
- İleri seviye
- Ders 13/69
- 4 dk
TypeAdapter ile özel sınıfı Hive'a kaydetmeyi öğrenirsin.
TypeAdapter nedir?
TypeAdapter, Hive'ın özel sınıfları nasıl kaydedip okuyacağını öğreten bir çeviricidir. Her adapter'ın benzersiz bir typeId'si olur ve Hive.registerAdapter ile kaydedilir. Adapter kayıtlı olmadan özel tip bir box'a koyamazsın.
class UserAdapter extends TypeAdapter<User> {
@override
final int typeId = 0;
// read ve write metodları
}@HiveType ve @HiveField
Model sınıflarını @HiveType(typeId: 0) ile işaretler, her alanı @HiveField(0), @HiveField(1) şeklinde sıralarsın. Bu ek açıklamalar kod üretimi ile adapter oluşturur. Elle adapter yazmak da mümkündür ama bu ek açıklamalar daha pratiktir.
@HiveType(typeId: 0)
class User extends HiveObject {
@HiveField(0)
final String name;
User(this.name);
}Uygulama UserAdapter yaz ve kullan
User sınıfı tanımla (final String name). UserAdapter yaz: typeId 0, read ve write metodları olsun. Adapter'ı kaydet, Hive'ı başlat, 'users' box'ını aç, 'u1' anahtarına User('Ayşe') koy, değeri al ve ismini yazdır.
Başlangıç kodu
import 'package:hive/hive.dart';
// User sınıfını tanımla
// final String name alanı olsun
// UserAdapter sınıfını yaz
// typeId = 0
// read ve write metodları
void main() async {
// adapter kaydet
// Hive'ı başlat
// 'users' box'ını aç
// 'u1' anahtarına User('Ayşe') koy
// değeri al ve ismini yazdır
}Örnek çözüm
import 'package:hive/hive.dart';
class User {
final String name;
User(this.name);
}
class UserAdapter extends TypeAdapter<User> {
@override
final int typeId = 0;
@override
User read(BinaryReader reader) {
return User(reader.readString());
}
@override
void write(BinaryWriter writer, User obj) {
writer.writeString(obj.name);
}
}
void main() async {
Hive.registerAdapter(UserAdapter());
Hive.init('hive_data');
final box = await Hive.openBox('users');
await box.put('u1', User('Ayşe'));
final user = box.get('u1') as User;
print(user.name);
await box.close();
}Beklenen çıktı
Ayşe
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Özel bir sınıfı Hive'a kaydetmek için ne kullanılır?
- JsonAdapter
- SqfliteAdapter
- TypeAdapter Doğru cevap
- StreamAdapter
Açıklama: TypeAdapter, Hive'ın özel sınıfları nasıl saklayacağını öğrenmesini sağlar; registerAdapter ile kaydedilir.
2 Adapter kaydet
Hive.____(UserAdapter());
Hive.registerAdapter(UserAdapter());
Açıklama: Adapter'ı Hive'a tanıtmak için registerAdapter çağrılır; adapter örneği parametre olarak verilir.
3 TypeAdapter parçaları
| Kavram | Anlamı |
|---|---|
TypeAdapter |
Özel sınıfı Hive'a tanıtır |
typeId |
Benzersiz kimlik |
@HiveType |
Sınıf işaretler |
registerAdapter |
Adapter kaydeder |