diff options
author | Scott Murray <scott.murray@konsulko.com> | 2022-11-21 02:30:35 -0500 |
---|---|---|
committer | Scott Murray <scott.murray@konsulko.com> | 2022-11-21 02:44:25 -0500 |
commit | e21709c9601209e26d09dea0a45e37f0636bb605 (patch) | |
tree | 6f7e9d1bda9126cc0dfe6ba401b40739715867e2 /lib/page_home.dart | |
parent | 1f5b482843291c17e3cbb265f59101f8d1874182 (diff) |
Rework for use in Flutter demo platform image
Changes:
- Converted to portrait orientation.
- Application enumeration and launching+activation enabled via use
of applaunchd gRPC API and agl-shell protocol platform channel
plugin in the embedder.
- Previous dashboard, hvac, media, etc. pages disabled. Some of
the code has been kept for potential reuse.
- Clock widget tweaked to fit in portrait mode navigation bar, and
take text color argument.
- Bluetooth, wifi, and phone signal icons mocked up in navigation
bar.
Known issues:
- The bottom panel area is static at present, support for popping
up a volume control slider like the Qt demo is planned as an
addition.
- The path to implementing connection and signal strength indications
is currently a bit hazy, it is possible that flutter-dbus might
be the simplest stopgap.
- State management has been kept basic, as there are a couple of
places where using provider or riverpod seems like perhaps an
overcomplication. This will be reviewed when KUKSA.val support is
integrated for the volume slider.
- Some of the layout sizing is a bit ad hoc, and it is not clear if
the previous layout helper class is actually worth keeping or not.
This should be reviewed when time permits.
Bug-AGL: SPEC-4611
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ib486b1fd92047f6c1ff1cd9569f49e3ccaf3269d
Diffstat (limited to 'lib/page_home.dart')
-rw-r--r-- | lib/page_home.dart | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/lib/page_home.dart b/lib/page_home.dart deleted file mode 100644 index 0c93c4e..0000000 --- a/lib/page_home.dart +++ /dev/null @@ -1,108 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_homescreen/homescreen.dart'; -import 'package:flutter_homescreen/layout_size_helper.dart'; - -// The Home page. -class HomePage extends StatelessWidget { - final Function(int index) onSetNavigationIndex; - - const HomePage({Key? key, required this.onSetNavigationIndex}) - : super(key: key); - - @override - Widget build(BuildContext context) { - var sizeHelper = LayoutSizeHelper(context); - return Container( - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [Colors.blueGrey.shade800, Colors.grey.shade900])), - constraints: BoxConstraints.expand(), - alignment: Alignment.center, - child: Wrap( - spacing: sizeHelper.largePadding, - runSpacing: sizeHelper.largePadding, - children: <Widget>[ - _HomePageEntry( - label: "DASHBOARD", - icon: Icons.drive_eta, - onPressed: () { - onSetNavigationIndex(PageIndex.dashboard.index); - }, - ), - _HomePageEntry( - label: "HVAC", - icon: Icons.thermostat, - onPressed: () { - onSetNavigationIndex(PageIndex.hvac.index); - }, - ), - _HomePageEntry( - label: "MEDIA", - icon: Icons.music_note, - onPressed: () { - onSetNavigationIndex(PageIndex.media.index); - }, - ), - _HomePageEntry( - label: "DEMO 3D", - icon: Icons.view_in_ar, - onPressed: () { - onSetNavigationIndex(PageIndex.demo3d.index); - }, - ), - ], - )); - } -} - -// Each one of the items on the Home page. -class _HomePageEntry extends StatelessWidget { - final String label; - final IconData icon; - final Null Function() onPressed; - - const _HomePageEntry( - {Key? key, - required this.label, - required this.icon, - required this.onPressed}) - : super(key: key); - - @override - Widget build(BuildContext context) { - var sizeHelper = LayoutSizeHelper(context); - return Padding( - padding: const EdgeInsets.symmetric(vertical: 8.0), - child: Column( - children: [ - OutlinedButton( - style: ElevatedButton.styleFrom( - shape: CircleBorder(), - padding: EdgeInsets.all(sizeHelper.largePadding), - side: BorderSide( - width: sizeHelper.defaultBorder, - color: Colors.lightBlue.shade100), - ), - onPressed: onPressed, - child: Icon( - icon, - color: Colors.lightBlue.shade50, - size: sizeHelper.largeIconSize, - ), - ), - Padding( - padding: EdgeInsets.all(sizeHelper.defaultPadding), - child: Text( - label, - style: DefaultTextStyle.of(context).style.copyWith( - fontSize: sizeHelper.baseFontSize, - color: Colors.lightBlue.shade100, - ), - ), - ), - ], - )); - } -} |