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(
|
||||||
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,
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
@ -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;
|
||||||
|
@ -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 {
|
||||||
|
Reference in New Issue
Block a user