Cards creating optimization

This commit is contained in:
Yegor Vialov 2018-11-11 19:51:02 +02:00
parent 30e4eaa023
commit d9790dedbb
2 changed files with 39 additions and 29 deletions

View File

@ -23,33 +23,48 @@ class HAView {
void _fillView(List<Entity> childEntities) {
List<HACard> autoGeneratedCards = [];
childEntities.forEach((entity) {
if (entity.isBadge) {
badges.add(entity);
} else {
if (!entity.isGroup) {
String groupIdToAdd = "${entity.domain}.${entity.domain}$count";
if (autoGeneratedCards.every((HACard card) => card.id != groupIdToAdd )) {
HACard card = HACard(
id: groupIdToAdd,
name: entity.domain,
type: "entities"
);
card.entities.add(entity);
autoGeneratedCards.add(card);
} else {
autoGeneratedCards.firstWhere((card) => card.id == groupIdToAdd).entities.add(entity);
}
} else {
badges.addAll(childEntities.where((entity){ return entity.isBadge;}));
childEntities.where((entity){ return entity.domain == "media_player";}).forEach((e){
HACard card = HACard(
name: e.displayName,
id: e.entityId,
linkedEntity: e,
type: "media-control"
);
cards.add(card);
});
childEntities.where((e){return (!e.isBadge && e.domain != "media_player");}).forEach((entity) {
if (!entity.isGroup) {
String groupIdToAdd = "${entity.domain}.${entity.domain}$count";
if (autoGeneratedCards.every((HACard card) => card.id != groupIdToAdd )) {
HACard card = HACard(
id: groupIdToAdd,
name: entity.domain,
type: "entities"
);
card.entities.add(entity);
autoGeneratedCards.add(card);
} else {
autoGeneratedCards.firstWhere((card) => card.id == groupIdToAdd).entities.add(entity);
}
} else {
HACard card = HACard(
name: entity.displayName,
id: entity.entityId,
linkedEntity: entity,
type: "entities"
);
card.entities.addAll(entity.childEntities.where((entity) {return entity.domain != "media_player";}));
entity.childEntities.where((entity) {return entity.domain == "media_player";}).forEach((entity){
HACard mediaCard = HACard(
name: entity.displayName,
id: entity.entityId,
linkedEntity: entity,
type: "entities"
type: "media-control"
);
card.entities.addAll(entity.childEntities);
cards.add(card);
}
cards.add(mediaCard);
});
cards.add(card);
}
});
cards.addAll(autoGeneratedCards);

View File

@ -25,15 +25,10 @@ class MediaControlCardWidget extends StatelessWidget {
left: 0.0,
right: 0.0,
child: Container(
height: 80.0,
color: Colors.black45,
child: _buildState(),
),
),
Positioned(
bottom: 0.0,
left: 0.0,
child: _buildState(),
),
],
));
}
@ -59,7 +54,7 @@ class MediaControlCardWidget extends StatelessWidget {
states.add(Text("${card.linkedEntity.state}", style: style.apply(fontSizeDelta: 4.0),));
} else {
states.add(Text("${card.linkedEntity.attributes['media_title'] ?? '-'}", style: style.apply(fontSizeDelta: 6.0, fontWeightDelta: 50),));
states.add(Text("${card.linkedEntity.attributes['media_artist'] ?? '-'}", style: style.apply(fontSizeDelta: 4.0),));
states.add(Text("${card.linkedEntity.attributes['media_artist'] ?? card.linkedEntity.attributes['app_name']}", style: style.apply(fontSizeDelta: 4.0),));
}
return Padding(
padding: EdgeInsets.only(left: Entity.leftWidgetPadding, right: Entity.rightWidgetPadding),