From d9ca55c3b757f8ef0df97e7413f319d3b4b27e26 Mon Sep 17 00:00:00 2001 From: Yegor Vialov Date: Sun, 18 Nov 2018 13:19:00 +0200 Subject: [PATCH] Resolves #131 --- lib/entity.page.dart | 16 +++++++++++----- lib/entity_widgets/state/switch_state.dart | 2 +- lib/main.dart | 11 ++++++----- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/entity.page.dart b/lib/entity.page.dart index 9a468a7..d997699 100644 --- a/lib/entity.page.dart +++ b/lib/entity.page.dart @@ -1,9 +1,9 @@ part of 'main.dart'; class EntityViewPage extends StatefulWidget { - EntityViewPage({Key key, @required this.entity, @required this.homeAssistant }) : super(key: key); + EntityViewPage({Key key, @required this.entityId, @required this.homeAssistant }) : super(key: key); - final Entity entity; + final String entityId; final HomeAssistant homeAssistant; @override @@ -12,21 +12,26 @@ class EntityViewPage extends StatefulWidget { class _EntityViewPageState extends State { String _title; + StreamSubscription _refreshDataSubscription; StreamSubscription _stateSubscription; @override void initState() { super.initState(); _stateSubscription = eventBus.on().listen((event) { - if (event.entityId == widget.entity.entityId) { + TheLogger.debug("State change event handled by entity page: ${event.entityId}"); + if (event.entityId == widget.entityId) { setState(() {}); } }); + _refreshDataSubscription = eventBus.on().listen((event) { + setState(() {}); + }); _prepareData(); } void _prepareData() async { - _title = widget.entity.displayName; + _title = widget.homeAssistant.entities.get(widget.entityId).displayName; } @@ -45,7 +50,7 @@ class _EntityViewPageState extends State { padding: EdgeInsets.all(10.0), child: HomeAssistantModel( homeAssistant: widget.homeAssistant, - child: widget.entity.buildEntityPageWidget(context) + child: widget.homeAssistant.entities.get(widget.entityId).buildEntityPageWidget(context) ) ), ); @@ -54,6 +59,7 @@ class _EntityViewPageState extends State { @override void dispose(){ if (_stateSubscription != null) _stateSubscription.cancel(); + if (_refreshDataSubscription != null) _refreshDataSubscription.cancel(); super.dispose(); } } \ No newline at end of file diff --git a/lib/entity_widgets/state/switch_state.dart b/lib/entity_widgets/state/switch_state.dart index 504449a..cb40957 100644 --- a/lib/entity_widgets/state/switch_state.dart +++ b/lib/entity_widgets/state/switch_state.dart @@ -24,7 +24,7 @@ class _SwitchStateWidgetState extends State { setState(() { newState = entity.state; updatedHere = true; - TheLogger.debug("Timer@!!"); + //TheLogger.debug("Timer@!!"); }); }); eventBus.fire(new ServiceCallEvent( diff --git a/lib/main.dart b/lib/main.dart index 8da4d5b..3e44bd7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -156,6 +156,7 @@ class _MainPageState extends State with WidgetsBindingObserver { _settingsLoaded = false; WidgetsBinding.instance.addObserver(this); + TheLogger.debug(" Creating new HomeAssistant instance"); _homeAssistant = HomeAssistant(); _settingsSubscription = eventBus.on().listen((event) { @@ -221,7 +222,7 @@ class _MainPageState extends State with WidgetsBindingObserver { if (_showEntityPageSubscription == null) { _showEntityPageSubscription = eventBus.on().listen((event) { - _showEntityPage(event.entity); + _showEntityPage(event.entity.entityId); }); } @@ -241,7 +242,7 @@ class _MainPageState extends State with WidgetsBindingObserver { _refreshData() async { _homeAssistant.updateSettings(_webSocketApiEndpoint, _password, _authType, _useLovelaceUI); _hideBottomBar(); - _showInfoBottomBar(message: "Refreshing data..."); + _showInfoBottomBar(message: "Refreshing..."); await _homeAssistant.fetch().then((result) { _hideBottomBar(); }).catchError((e) { @@ -270,11 +271,11 @@ class _MainPageState extends State with WidgetsBindingObserver { _homeAssistant.callService(domain, service, entityId, additionalParams).catchError((e) => _setErrorState(e)); } - void _showEntityPage(Entity entity) { + void _showEntityPage(String entityId) { Navigator.push( context, MaterialPageRoute( - builder: (context) => EntityViewPage(entity: entity, homeAssistant: _homeAssistant), + builder: (context) => EntityViewPage(entityId: entityId, homeAssistant: _homeAssistant), ) ); } @@ -386,7 +387,7 @@ class _MainPageState extends State with WidgetsBindingObserver { void _showInfoBottomBar({@required String message}) { _bottomBarAction = Container(height: 0.0, width: 0.0,); - _bottomBarColor = Colors.blue.shade100; + _bottomBarColor = Colors.grey.shade50; setState(() { _bottomBarText = "$message"; _showBottomBar = true;