Fix state handling on entity view page

This commit is contained in:
estevez 2018-09-29 17:59:38 +03:00
parent 6834f2ca34
commit 2fcd27d240
4 changed files with 19 additions and 4 deletions

View File

@ -256,7 +256,7 @@ class InputEntity extends Entity {
Padding( Padding(
padding: EdgeInsets.only(right: 16.0), padding: EdgeInsets.only(right: 16.0),
child: Text( child: Text(
"${_state}${this.unitOfMeasurement}", "$_state${this.unitOfMeasurement}",
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: new TextStyle( style: new TextStyle(
fontSize: 16.0, fontSize: 16.0,

View File

@ -13,12 +13,21 @@ class _EntityViewPageState extends State<EntityViewPage> {
String _title; String _title;
Entity _entity; Entity _entity;
String _lastState; String _lastState;
StreamSubscription _stateSubscription;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_entity = widget.entity; _entity = widget.entity;
_lastState = _entity.state; _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(); _prepareData();
} }
@ -47,4 +56,10 @@ class _EntityViewPageState extends State<EntityViewPage> {
), ),
); );
} }
@override
void dispose(){
if (_stateSubscription != null) _stateSubscription.cancel();
super.dispose();
}
} }

View File

@ -144,7 +144,7 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
if (_stateSubscription != null) _stateSubscription.cancel(); if (_stateSubscription != null) _stateSubscription.cancel();
_stateSubscription = eventBus.on<StateChangedEvent>().listen((event) { _stateSubscription = eventBus.on<StateChangedEvent>().listen((event) {
setState(() { setState(() {
if (event.setToCollection) { if (event.localChange) {
_entities _entities
.get(event.entityId) .get(event.entityId)
.state = event.newState; .state = event.newState;

View File

@ -45,9 +45,9 @@ class haUtils {
class StateChangedEvent { class StateChangedEvent {
String entityId; String entityId;
String newState; String newState;
bool setToCollection; bool localChange;
StateChangedEvent(this.entityId, this.newState, this.setToCollection); StateChangedEvent(this.entityId, this.newState, this.localChange);
} }
class SettingsChangedEvent { class SettingsChangedEvent {