Как использовать 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 и импортировать все материалы улья.

Другие вопросы по тегам