Sign In

flutter - hive(로컬 저장소 NoSQL)

Y
yeji Kim

참고 자료

dependencies:
	hive: ^2.2.3
    hive_flutter: ^1.1.0

dev_dependencies:
	build_runner: ^2.4.7
    hive_generator: ^2.0.1
await Hive.initFlutter();

void main() async {
  await Hive.initFlutter();
  runApp(const MyApp());
}
await Hive.openBox("openBox");
Hive.openLazyBox("openBox");

Hive.openBox("person");
Box box = Hive.box("person");
box.put("name", "tyger");
box.put("age", 20);
box.add("tyger1");

print(box.values);
// (tyger1, 20, tyger)
print(box.keys);
// (0, age, name)
print(box.get("name"));
// tyger
print(box.get("age"));
// 20

print(box.get("birthday", defaultValue: 20230101));
// 20230101

Box box = Hive.box("person");
box.deleteAll(["name", "age"]);

Box box = Hive.box("person");
box.put("name", "tyger");
print(box.get("name"));
// tyger
Box box = Hive.box("person");
box.put("person", {
	"name": "tyger",
	"age": 20,
});
final person = box.get("person");
print(person);
print(person["name"]);

// {name: tyger, age: 20}
// tyger

box.putAll({
	"person1": {
		"name": "tyger1",
		"age": 30,
	},
	"person2": {
		"name": "tyger2",
		"age": 40,
	},
});
print(box.values);

// {name: tyger, age: 20}, {name: tyger1, age: 30}, {name: tyger2, age: 40}


List<dynamic> query = box.values.where((e) => e["age"] == 30).toList();
print(query);

// [{name: tyger1, age: 30}]
part 'car.g.dart';

@HiveType(typeId: 1)
class Car {
  @HiveField(0)
  int number;

  @HiveField(1)
  Brand type;

  @HiveField(2)
  String name;

  @HiveField(3)
  List<String> colors;

  @HiveField(4)
  bool isRoof;

  Car({
    required this.number,
    required this.brand,
    required this.name,
    required this.colors,
    required this.isRoof,
  });

  @override
  String toString() =>
      "Car(number: $number, brand: $brand, name: $name, colors: $colors, isRoof: $isRoof)";
}

Hive.registerAdapter(CarAdapter());

Box box = Hive.box("car_factory");
box.addAll(cars);
print(box.values);
ValueListenableBuilder<Box>(
	valueListenable: Hive.box("car_factory").listenable(),
	builder: (BuildContext context, Box value, Widget? child) {
      ...
}),
아무튼-작업일지
Subscribe to '아무튼-작업일지'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to '아무튼-작업일지'!
Subscribe
👍