From 0e92418a33f210ee03ab9cdf2144b8ad716bec86 Mon Sep 17 00:00:00 2001 From: Yegor Vialov Date: Tue, 14 Apr 2020 18:15:28 +0000 Subject: [PATCH] Handle missed entity on Entity page --- lib/pages/entity.page.dart | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/pages/entity.page.dart b/lib/pages/entity.page.dart index 8d378f0..6370f4a 100644 --- a/lib/pages/entity.page.dart +++ b/lib/pages/entity.page.dart @@ -12,35 +12,45 @@ class EntityViewPage extends StatefulWidget { class _EntityViewPageState extends State { StreamSubscription _refreshDataSubscription; StreamSubscription _stateSubscription; - Entity entity; + Entity _entity; @override void initState() { super.initState(); _stateSubscription = eventBus.on().listen((event) { if (event.entityId == widget.entityId) { - entity = HomeAssistant().entities.get(widget.entityId); Logger.d("[Entity page] State change event handled: ${event.entityId}"); - setState(() {}); + setState(() { + _getEntity(); + }); } }); _refreshDataSubscription = eventBus.on().listen((event) { - entity = HomeAssistant().entities.get(widget.entityId); - setState(() {}); + Logger.d("[Entity page] Refresh data event handled"); + setState(() { + _getEntity(); + }); }); - entity = HomeAssistant().entities.get(widget.entityId); + _getEntity(); + } + + _getEntity() { + _entity = HomeAssistant().entities.get(widget.entityId); } @override Widget build(BuildContext context) { + String entityNameToDisplay = '${(_entity?.displayName ?? widget.entityId) ?? ''}'; return new Scaffold( appBar: new AppBar( leading: IconButton(icon: Icon(Icons.arrow_back), onPressed: (){ Navigator.pop(context); }), - title: new Text("${entity.displayName}"), + title: new Text(entityNameToDisplay), ), - body: EntityPageLayout(entity: entity), + body: _entity == null ? PageLoadingError( + errorText: 'Entity is not available $entityNameToDisplay', + ) : EntityPageLayout(entity: _entity), ); }