Использую библиотеку flutter_bloc
v 6.0.0
. Я ищу правильный способ использования одного изменяемого объекта, который содержит несколько состояний.
Например, вместо нескольких состояний:
enum RaisedButtonState {
loading, idle
}
enum FlatButtonState {
loading, idle
}
Я хочу использовать один объект состояния:
class MyState {
bool raisedButtonLoading;
bool flatButtonLoading;
MyState({
this.flatButtonLoading = false,
this.raisedButtonLoading = false,
});
}
Однако это будет иметь проблемы при создании нового события с использованием того же состояния, например
emit(this.state..raisedButtonLoading = false);
потому что функция emit()
имеет валидацию для проверки идентичных состояний
if (state == _state && _emitted) return;
В настоящее время для решения этой проблемы я добавил в MyState
следующее:
@override
int get hashCode => super.hashCode;
@override
bool operator ==(Object o) {
return false;
}
Я понимаю, что это может нарушить основную концепцию библиотеки. Однако необходимость создавать отдельные enum/class
для разных состояний кажется немного избыточной, особенно в проекте, над которым я сейчас работаю, со сложной структурой пользовательского интерфейса.
Хотите знать, есть ли лучший или правильный способ добиться этого?