Как использовать Customer TypeAdapter (Hive/Flutter)?
Я не совсем уверен, как использовать Hive DB во Flutter. Я имею в виду, что у меня есть класс модели WooCustomer, и я хочу сохранить его локально (как только клиент войдет в систему).
Мой вопрос: нужно ли мне преобразовывать это
WooCustomer
к
HiveObject
затем создайте
TypeAdapter
или я создаю напрямую?
PS: WooCustomer - это внешний пакет.
Это правильный способ реализовать
TypeAdapter<WooCustomer>
?
class DatabaseAdapterService extends TypeAdapter<WooCustomer> {
@override
final int typeId = 0;
@override
WooCustomer read(BinaryReader reader) {
return WooCustomer()
..id = reader.read()
..username = reader.read()
..firstName = reader.read()
..lastName = reader.read()
..email = reader.read()
..password = reader.read()
..avatarUrl = reader.read()
..role = reader.read()
..dateCreated = reader.read()
..dateCreatedGmt = reader.read()
..dateModified = reader.read()
..dateModifiedGmt = reader.read()
..isPayingCustomer = reader.read()
..links = reader.read()
..metaData = reader.read()
..billing = reader.read()
..shipping = reader.read();
}
@override
void write(BinaryWriter writer, WooCustomer customer) {
writer.write(customer.username);
writer.write(customer.id);
writer.write(customer.firstName);
writer.write(customer.lastName);
writer.write(customer.email);
writer.write(customer.password);
writer.write(customer.links);
writer.write(customer.avatarUrl);
writer.write(customer.role);
writer.write(customer.metaData);
writer.write(customer.dateCreated);
writer.write(customer.dateCreatedGmt);
writer.write(customer.dateModified);
writer.write(customer.dateModified);
writer.write(customer.dateModifiedGmt);
writer.write(customer.isPayingCustomer);
writer.write(customer.billing);
writer.write(customer.shipping);
}
}
1 ответ
Да, ты всегда можешь это сделать. Сначала получите эти плагины,
hive, hive_flutter
в зависимостях в pubspec.yaml. а в файле pubspec также есть раздел
dev dependencies
там добавить,
hive_generator: ^1.1.0 build_runner: ^2.0.1
И вам хорошо начать .... Сначала напишите свой класс в этом формате,
import 'package:hive/hive.dart'; //import Hive
part 'weather_model.g.dart';
// Specify the Location of the type-adapter's Location (specifically)
//Add the .g.dart extension
// at last of the same File name you are using
// and add "part" keyword before all.
@HiveType(typeId: 0) //Add this Line
class WeatherModel {
@HiveField(0) //Add this Line, From Index 0... and so on.
String user_city; // Your Class Materials...
@HiveField(1) //Add this Line, From Index 0... and so on.
bool celciusMetric;
WeatherModel(
{this.user_city,
this.celciusMetric}); //Constructor here..
// flutter packages pub run build_runner build
}
После того, как вы прочтете весь закомментированный код выше, и внедрите его в соответствии с вашим использованием. Зайдите в свой Терминал и напишите там,
flutter packages pub run build_runner build --delete-conflicting-outputs
и тебе хорошо идти, ты найдешь
Теперь перейдите к Вашему
main.dart
и импортировать все материалы улья.