diff --git a/lib/home_assistant.class.dart b/lib/home_assistant.class.dart index b47e2db..1bf2689 100644 --- a/lib/home_assistant.class.dart +++ b/lib/home_assistant.class.dart @@ -162,7 +162,8 @@ class HomeAssistant { count: viewCounter, id: "${rawView['id']}", name: rawView['title'], - iconName: rawView['icon'] + iconName: rawView['icon'], + panel: rawView['panel'] ?? false, ); if (rawView['badges'] != null && rawView['badges'] is List) { diff --git a/lib/ui_class/view.class.dart b/lib/ui_class/view.class.dart index b6ba09a..fb07582 100644 --- a/lib/ui_class/view.class.dart +++ b/lib/ui_class/view.class.dart @@ -4,16 +4,18 @@ class HAView { List cards = []; List badges = []; Entity linkedEntity; - String name; - String id; - String iconName; - int count; + final String name; + final String id; + final String iconName; + final int count; + final bool panel; HAView({ this.name, this.id, this.count, this.iconName, + this.panel: false, List childEntities }) { if (childEntities != null) { diff --git a/lib/ui_widgets/view.dart b/lib/ui_widgets/view.dart index e2433ca..34d093d 100644 --- a/lib/ui_widgets/view.dart +++ b/lib/ui_widgets/view.dart @@ -24,11 +24,28 @@ class ViewWidgetState extends State { @override Widget build(BuildContext context) { - return ListView( - padding: EdgeInsets.all(0.0), - //physics: const AlwaysScrollableScrollPhysics(), - children: _buildChildren(context), - ); + if (widget.view.panel) { + return FractionallySizedBox( + widthFactor: 1, + heightFactor: 1, + child: _buildPanelChild(context), + ); + } else { + return ListView( + padding: EdgeInsets.all(0.0), + //physics: const AlwaysScrollableScrollPhysics(), + children: _buildChildren(context), + ); + } + } + + Widget _buildPanelChild(BuildContext context) { + if (widget.view.cards != null && widget.view.cards.isNotEmpty) { + Logger.d("Building panel view. Card ${widget.view.cards[0].type}"); + return widget.view.cards[0].build(context); + } else { + return Container(width: 0, height: 0); + } } List _buildChildren(BuildContext context) {