하얀설표 블로그




dart, flutter Hive Column 추가하는 방법(how add Column)





( 수정됨)


코드 예시

# models.py

import 'package:hive/hive.dart';

part 'models.g.dart';

@HiveType(typeId: 0)
class Model extends HiveObject {
  // @HiveField(index)
  @HiveField(0)
  int id;
  @HiveField(1)
  String name;
  @HiveField(2)
  List<int> array;
  @HiveField(3)
  DateTime dt = DateTime.now();
  // 추가됨
  @HiveField(4, defaultValue: -1.1)
  double float;
  // 추가됨
  @HiveField(5, defaultValue: {'key': 'defaultValue'})
  Map dict;
  @HiveField(6)
  dynamic d;

  Model(this.id, this.name, this.array, this.float, this.dict, this.d);

// print() 명령시 출력되는 문구
  @override
  String toString() => 'Model 객체는 다음과 같습니다. id: $id, name: $name, array: $array, dt: $dt, float: $float, dict: $dict, d: $d';
}

# handle.dart
import 'package:hive/hive.dart';

import 'package:example/Hive/models.dart';

void main() async {
  Hive.registerAdapter(ModelAdapter());
  Hive.init('modelbox');
  var box = await Hive.openBox('modelbox');
  for (final i in box.values) {
    print(i);
  }
  box.close();
}

결과

Model 객체는 다음과 같습니다. id: 4, name: , array: [54123], dt: 2022-02-22 00:00:00.000, float: -1.1, dict: {key: defaultValue}, d: null
Model 객체는 다음과 같습니다. id: 1111, name: data4, array: [], dt: 2023-12-12 16:31:08.954, float: -1.1, dict: {key: defaultValue}, d: null

설명

위 코드는 이전 글에서 사용한 model Class에서 일부 Column을 추가할 것이다.

@HiveField({index}, defaultValue: {value})

코드에서 확인할 수 있듯이 float과 dict Column이 추가되었으며, 기존에는 해당 데이터가 없었기 때문에 기본값인 -1.1과 {key: defaultValue}가 데이터에 추가되어있는 것을 확인할 수 있다.
만약 Column을 추가하더라도 기본값(defaultValue)을 지정하지 않았다면 null이 존재하게 된다.

build

당연한 말이지만, model adapter의 내용이 변경되었기 때문에 새로 build해주어야 한다.
만약 이게 무슨 말인지 모르겠다면 이 링크를 확인하면 된다.


공감 : 0







white.seolpyo.com