Flutter : How to generate Hive Object from json dart model
Objectives:
Data awal berupa Json (misal didapat dari API yang diprovide backend)
Misalkan data yang di dapat dari API adalah seperti berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"id": 1, | |
"name": "Monkey D. Luffy", | |
"email": "mdl@opw.com", | |
"devil_fruit": "gomu gomu no mi", | |
"gender": "male", | |
"role": "captain", | |
"level": 243, | |
"create_at": "2020-02-20", | |
"updated_at": "2020-02-20" | |
} |
Convert data menjadi class model dart dengan online generator
Gunakan converter berikut untuk membuat class:
Buatlah class berdasarkan hasil converter tersebut, misal user.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class User { | |
int id; | |
String name; | |
String email; | |
String devilFruit; | |
String gender; | |
String role; | |
int level; | |
String createAt; | |
String updatedAt; | |
User( | |
{this.id, | |
this.name, | |
this.email, | |
this.devilFruit, | |
this.gender, | |
this.role, | |
this.level, | |
this.createAt, | |
this.updatedAt}); | |
User.fromJson(Map<String, dynamic> json) { | |
id = json['id']; | |
name = json['name']; | |
email = json['email']; | |
devilFruit = json['devil_fruit']; | |
gender = json['gender']; | |
role = json['role']; | |
level = json['level']; | |
createAt = json['create_at']; | |
updatedAt = json['updated_at']; | |
} | |
Map<String, dynamic> toJson() { | |
final Map<String, dynamic> data = new Map<String, dynamic>(); | |
data['id'] = this.id; | |
data['name'] = this.name; | |
data['email'] = this.email; | |
data['devil_fruit'] = this.devilFruit; | |
data['gender'] = this.gender; | |
data['role'] = this.role; | |
data['level'] = this.level; | |
data['create_at'] = this.createAt; | |
data['updated_at'] = this.updatedAt; | |
return data; | |
} | |
} |
Install Hive Object Converter
Install plug-in VSCode berikut: https://marketplace.visualstudio.com/items?itemName=mrgnhnt96.hive-object-converter
Convert Class dart menjadi Hive Object
Klik kanan file user.dart tadi dan pilih
[Hive] Convert to Hive
Generate g model
Generat file g dengan cara berikut:
https://docs.hivedb.dev/#/custom-objects/generate_adapter
https://docs.hivedb.dev/#/custom-objects/generate_adapter
Apabila gagal atau terminal looping terus, jalankan flutter packages upgrade
Kemudian jalankan lagi :
flutter packages pub run build_runner build
--delete-conflicting-outputs