Skip to content

Flutter-Students-Club/zemin_istanbul_hive_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hive In Flutter

Made for Zemin Istanbul Presantation

Basically, the application saves the basic data types and custom generated data classes to the local storage.

Getting Started

Dependencies 🧰

Package

dependencies:
  hive_flutter: ^1.1.0 //add this line

dev_dependencies:
  build_runner: ^2.2.1 //add this line
  hive_generator: ^1.1.3 //add this line
  • hive_flutter

Provides operations on the local storage.

  • build_runner

Provides a concrete way of generating files using Dart code.

  • hive_generator

Provides automatic generation of TypeAdapters for almost any class.

Project Architecture Output

.
├── lib                  
    ├── core
        └── service
            ├── cache
                ├── base_cache_manager.dart
                └── cache_enums.dart   
    ├── model
        ├── todo_model.dart
        └── todo_model.g.dart
    └── product
        └── todo
            ├── todo_service.dart
            └── todo_view.dart
└── main.dart

Base Functions & Hive Classes

Base Functions

  • Initialize Hive
  await Hive.initFlutter();
  • Open Hive Box
Future<void> boxInit() async {
  await Hive.openBox(boxName);
}
  • Add item to box with auto increment key
Future<void> addItemWithAutoIncrementKey(T item) async {
  await _box!.add(item);
}
  • Add item to box with custom key
Future<void> addItemWithCustomKey(dynamic key, T item) async {
  await _box!.put(key, item);
}
  • Get item from box
T? getItem(dynamic key) {
  return _box!.get(key);
}
  • Remove item from box
Future<void> removeItem(dynamic key) async {
  await _box!.delete(key);
}
  • Clear box
Future<void> clearBox() async {
  await _box!.clear();
}
  • Close box
Future<void> closeBox() async {
  await _box!.close();
}

Hive Classes

  • Class Architecture
import 'package:hive_flutter/adapters.dart';
part 'todo_model.g.dart';

@HiveType(typeId: 1)
class Todo {
  @HiveField(0)
  int? userId;
  @HiveField(1)
  int? id;
  @HiveField(2)
  String? title;
  @HiveField(3)
  bool? completed;

  Todo({this.userId, this.id, this.title, this.completed});

  Todo.fromJson(Map<String, dynamic> json) {...}
  Map<String, dynamic> toJson() {...}
}
  • Generate Part File Command
flutter pub run build_runner build

Create an Manager from Generic Cache Manager

  • initialize
final BaseCacheManager<Todo> _todoCacheManager = BaseCacheManager<Todo>(boxName: CacheBoxNames.todo);
Future<void> serviceInit() async {
  await _todoCacheManager.boxInit();
}

Usage 🛠

When the manager is generated and initialized, it can accesses and uses generic cache manager functions.

await _todoCacheManager.boxInit();
_todoCacheManager.getItemList();
await _todoCacheManager.addItemList(items);
await _todoCacheManager.clearBox();
...

Source

Hive Documentation

About

Flutter Students Club & Zemin Istanbul workshop Hive App

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages