Fix state handling on entity view page
This commit is contained in:
parent
6834f2ca34
commit
2fcd27d240
@ -256,7 +256,7 @@ class InputEntity extends Entity {
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 16.0),
|
||||
child: Text(
|
||||
"${_state}${this.unitOfMeasurement}",
|
||||
"$_state${this.unitOfMeasurement}",
|
||||
textAlign: TextAlign.right,
|
||||
style: new TextStyle(
|
||||
fontSize: 16.0,
|
||||
|
@ -13,12 +13,21 @@ class _EntityViewPageState extends State<EntityViewPage> {
|
||||
String _title;
|
||||
Entity _entity;
|
||||
String _lastState;
|
||||
StreamSubscription _stateSubscription;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_entity = widget.entity;
|
||||
_lastState = _entity.state;
|
||||
if (_stateSubscription != null) _stateSubscription.cancel();
|
||||
_stateSubscription = eventBus.on<StateChangedEvent>().listen((event) {
|
||||
setState(() {
|
||||
if (event.entityId == _entity.entityId) {
|
||||
_lastState = event.newState ?? _entity.state;
|
||||
}
|
||||
});
|
||||
});
|
||||
_prepareData();
|
||||
}
|
||||
|
||||
@ -47,4 +56,10 @@ class _EntityViewPageState extends State<EntityViewPage> {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose(){
|
||||
if (_stateSubscription != null) _stateSubscription.cancel();
|
||||
super.dispose();
|
||||
}
|
||||
}
|
@ -144,7 +144,7 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
|
||||
if (_stateSubscription != null) _stateSubscription.cancel();
|
||||
_stateSubscription = eventBus.on<StateChangedEvent>().listen((event) {
|
||||
setState(() {
|
||||
if (event.setToCollection) {
|
||||
if (event.localChange) {
|
||||
_entities
|
||||
.get(event.entityId)
|
||||
.state = event.newState;
|
||||
|
@ -45,9 +45,9 @@ class haUtils {
|
||||
class StateChangedEvent {
|
||||
String entityId;
|
||||
String newState;
|
||||
bool setToCollection;
|
||||
bool localChange;
|
||||
|
||||
StateChangedEvent(this.entityId, this.newState, this.setToCollection);
|
||||
StateChangedEvent(this.entityId, this.newState, this.localChange);
|
||||
}
|
||||
|
||||
class SettingsChangedEvent {
|
||||
|
Reference in New Issue
Block a user