Я использую библиотеку 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.