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: EdgeInsets.only(right: 16.0),
child: Text(
"${_state}${this.unitOfMeasurement}",
"$_state${this.unitOfMeasurement}",
textAlign: TextAlign.right,
style: new TextStyle(
fontSize: 16.0,

View File

@ -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();
}
}

View File

@ -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;

View File

@ -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 {