Как правильно использовать BLo C для абстрагирования bluetooth во флаттере - PullRequest
0 голосов
/ 27 мая 2020

Я использую библиотеку superenum (https://pub.dev/packages/super_enum) для создания моего состояния и типов событий для моего bluetooth blo c во флаттере с генерациями кода.

Это определение .

enum _BluetoothState {
  @object
  INIT, //Bluetooth is off
  @object
  IN_PROGRESS, //An event is in progress - show busy sign
  @object
  OFF, //Bluetooth is off
  @object
  ON, //Bluetooth is on
  @object
  SCANNING, //Bluetooth is scanning for devices
  @Data(fields: [
    DataField('deviceName'),
  ])
  CONNECTED, //Bluetooth is connected to one device
  @Data(fields: [
    DataField('description'),
  ])
  ERROR, //general Error with an error description
}

И События

enum _BluetoothEvent {
  @object
  SWITCH_ON,
  @object
  SWITCH_OFF,
  @object
  START_SCANNING,
  @object
  STOP_SCANNING,
  @Data(fields: [
    DataField<String>('deviceName'),
    DataField<String>('deviceUuid'),
    DataField<String>('serviceUuid'),
    DataField<String>('notifyUuid'),
    DataField<String>('writeUuid'),
  ])
  CONNECT,
  @object
  DISCONNECT
}

У меня кроме этих событий и состояний есть один приемник для записи данных UART и один поток для чтения данных. Мой вопрос здесь в том, должен ли я создать отдельное состояние для уведомления о новых данных и события для записи данных? Мне интересно, не будет ли это слишком далеко от шаблона. Есть идеи или твердые мнения? Кроме того, blo c только частично обращен к пользовательскому интерфейсу и больше является внутренней абстракцией, потребляемой из основного приложения ochestring blo c.

...