Handle missed entity on Entity page
This commit is contained in:
		| @@ -12,35 +12,45 @@ class EntityViewPage extends StatefulWidget { | |||||||
| class _EntityViewPageState extends State<EntityViewPage> { | class _EntityViewPageState extends State<EntityViewPage> { | ||||||
|   StreamSubscription _refreshDataSubscription; |   StreamSubscription _refreshDataSubscription; | ||||||
|   StreamSubscription _stateSubscription; |   StreamSubscription _stateSubscription; | ||||||
|   Entity entity; |   Entity _entity; | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   void initState() { |   void initState() { | ||||||
|     super.initState(); |     super.initState(); | ||||||
|     _stateSubscription = eventBus.on<StateChangedEvent>().listen((event) { |     _stateSubscription = eventBus.on<StateChangedEvent>().listen((event) { | ||||||
|       if (event.entityId == widget.entityId) { |       if (event.entityId == widget.entityId) { | ||||||
|         entity = HomeAssistant().entities.get(widget.entityId); |  | ||||||
|         Logger.d("[Entity page] State change event handled: ${event.entityId}"); |         Logger.d("[Entity page] State change event handled: ${event.entityId}"); | ||||||
|         setState(() {}); |         setState(() { | ||||||
|  |           _getEntity(); | ||||||
|  |         }); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|     _refreshDataSubscription = eventBus.on<RefreshDataFinishedEvent>().listen((event) { |     _refreshDataSubscription = eventBus.on<RefreshDataFinishedEvent>().listen((event) { | ||||||
|       entity = HomeAssistant().entities.get(widget.entityId); |       Logger.d("[Entity page] Refresh data event handled"); | ||||||
|       setState(() {}); |       setState(() { | ||||||
|  |         _getEntity(); | ||||||
|  |       }); | ||||||
|     }); |     }); | ||||||
|     entity = HomeAssistant().entities.get(widget.entityId); |     _getEntity(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   _getEntity() { | ||||||
|  |     _entity = HomeAssistant().entities.get(widget.entityId); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Widget build(BuildContext context) { |   Widget build(BuildContext context) { | ||||||
|  |     String entityNameToDisplay = '${(_entity?.displayName ?? widget.entityId) ?? ''}'; | ||||||
|     return new Scaffold( |     return new Scaffold( | ||||||
|       appBar: new AppBar( |       appBar: new AppBar( | ||||||
|         leading: IconButton(icon: Icon(Icons.arrow_back), onPressed: (){ |         leading: IconButton(icon: Icon(Icons.arrow_back), onPressed: (){ | ||||||
|           Navigator.pop(context); |           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), | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user