part of '../main.dart'; class GroupEntity extends Entity { final List _domainsForSwitchableGroup = ["switch", "light", "automation", "input_boolean"]; String mutualDomain; bool switchable = false; GroupEntity(Map rawData, String webHost) : super(rawData, webHost); @override Widget _buildStatePart(BuildContext context) { if (switchable) { return SwitchStateWidget( domainForService: "homeassistant", ); } else { return super._buildStatePart(context); } } @override void update(Map rawData, String webHost) { super.update(rawData, webHost); if (_isOneDomain()) { mutualDomain = attributes['entity_id'][0].split(".")[0]; switchable = _domainsForSwitchableGroup.contains(mutualDomain); } } bool _isOneDomain() { bool result = false; if (attributes['entity_id'] != null && attributes['entity_id'] is List && attributes['entity_id'].isNotEmpty) { String firstChildDomain = attributes['entity_id'][0].split(".")[0]; result = true; attributes['entity_id'].forEach((childEntityId){ if (childEntityId.split(".")[0] != firstChildDomain) { result = false; } }); } return result; } }