Hive에 해당하는 객체 이외의 객체를 저장할 수도 있습니다.
Hive는 모든 원본 및 List, Map, DataTime 및 Uint8 List에 해당합니다.
하지만 다른 대상을 저장하고 싶은 경우도 있다고 생각합니다.
파일 저장
· MaterialColor 저장
etc...
TypeAdater 만들기
객체를 바이너리 형식으로 변환하는 TypeAdapter를 만들고 등록하여 객체를 저장할 수 있습니다.
보통 하이브.generator를 사용하여 자동으로 생성하고 싶지만 대상이 지원하지 않습니다
Error: HiveError: Cannot write, unknown type: File. Did you forget to register an adapter?
등의 오류로 저장할 수 없습니다.TypeAdapter 자체 제작
File 객체의 TypeAdapter를 만듭니다.
file_adapter.dart
import 'dart:io';
import 'package:hive_flutter/adapters.dart';
class FileAdapter extends TypeAdapter<File> {
final typeId = 223; // 0~223まで
File read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return File(fields[0] as String);
}
void write(BinaryWriter writer, File obj) {
writer
..writeByte(1)
..writeByte(0)
..write(obj.path);
}
}
작성된 어댑터를 register 어댑터로 등록합니다.main.dart
void main() async {
// Hive初期化
await Hive.initFlutter();
// Adapter登録
Hive.registerAdapter(FileAdapter());
runApp(child:const MyApp());
}
File 객체도 저장할 수 있습니다.잘못된 점이나 개선된 점이 있다면
지적해 주셨으면 좋겠습니다.
참고 문헌
hive docs
Reference
이 문제에 관하여(Hive에 해당하는 객체 이외의 객체를 저장할 수도 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kirisimacreate/articles/6badb7d8ee58f8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)