diff options
Diffstat (limited to 'lib/page_dashboard.dart')
-rw-r--r-- | lib/page_dashboard.dart | 218 |
1 files changed, 0 insertions, 218 deletions
diff --git a/lib/page_dashboard.dart b/lib/page_dashboard.dart deleted file mode 100644 index c354415..0000000 --- a/lib/page_dashboard.dart +++ /dev/null @@ -1,218 +0,0 @@ -import 'dart:async'; -import 'dart:math'; - -import 'package:flutter/material.dart'; -import 'package:flutter_homescreen/layout_size_helper.dart'; - -// The Dashboard page. -class DashboardPage extends StatefulWidget { - DashboardPage({Key? key}) : super(key: key); - - @override - _DashboardPageState createState() => _DashboardPageState(); -} - -class _DashboardPageState extends State<DashboardPage> { - late Timer _timer; - - double speed = 20; - // between 0 and 1.0 - double rpm = 0.2; - // between 0 and 1.0 - double fuel = 0.2; - - @override - void initState() { - _timer = new Timer.periodic( - Duration(milliseconds: 10), - (Timer timer) { - setState(() { - double now = DateTime.now().millisecondsSinceEpoch / 2000; - speed = 50 + 40 * sin(now); - rpm = 0.5 + sin(now) / 3.0; - fuel = 0.6 + cos(now) / 4.0; - }); - }, - ); - // Animate the values for the demo. - // Eventually, we will get the state of the car from the API. - super.initState(); - } - - @override - void dispose() { - _timer.cancel(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - var sizeHelper = LayoutSizeHelper(context); - return Container( - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [Colors.teal.shade900, Colors.grey.shade900])), - constraints: BoxConstraints.expand(), - alignment: Alignment.center, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Container( - height: sizeHelper.largeIconSize * 1, - width: sizeHelper.largeIconSize * 2, - decoration: BoxDecoration( - border: Border.all( - color: Theme.of(context).primaryColorLight, - width: sizeHelper.defaultBorder, - ), - borderRadius: BorderRadius.all( - Radius.circular(sizeHelper.largeIconSize / 2.0))), - child: Center( - child: Text( - '${speed.floor()} kpm', - style: Theme.of(context).textTheme.headline2, - ), - ), - ), - _RPMWidget(rpm), - _FuelWidget(fuel), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - _TireWidget('Left front tire', 21, CrossAxisAlignment.end), - _TireWidget('Left rear tire', 23, CrossAxisAlignment.end), - ], - ), - Image.asset( - 'images/HMI_Dashboard_Car_720.png', - width: 2.0 * sizeHelper.largeIconSize, - fit: BoxFit.contain, - ), - Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _TireWidget('Right front tire', 21, CrossAxisAlignment.start), - _TireWidget('Right rear tire', 23, CrossAxisAlignment.start), - ], - ), - ], - ), - ], - ), - ); - } -} - -// The RPM indicator. -class _RPMWidget extends StatelessWidget { - final double rpm; - - _RPMWidget(this.rpm); - - @override - Widget build(BuildContext context) { - var sizeHelper = LayoutSizeHelper(context); - return Stack( - alignment: Alignment.center, - children: [ - Text( - 'RPM', - style: Theme.of(context).textTheme.headline4, - ), - Container( - height: sizeHelper.largeIconSize * 1.5, - width: sizeHelper.largeIconSize * 1.5, - child: RotatedBox( - quarterTurns: 2, - child: CircularProgressIndicator( - value: rpm, - color: HSLColor.fromColor(Colors.redAccent) - .withSaturation(rpm) - .toColor(), - strokeWidth: sizeHelper.largeIconSize / 2.0, - semanticsLabel: 'RPM indicator', - ), - ), - ) - ], - ); - } -} - -// The fuel indicator. -class _FuelWidget extends StatelessWidget { - final double fuel; - - _FuelWidget(this.fuel); - - @override - Widget build(BuildContext context) { - var sizeHelper = LayoutSizeHelper(context); - return Row( - children: [ - Container( - height: sizeHelper.largeIconSize / 4.0, - width: sizeHelper.largeIconSize / 2.0, - child: Center( - child: Text( - 'Fuel', - style: Theme.of(context).textTheme.headline4, - ), - ), - ), - Container( - height: sizeHelper.largeIconSize / 4.0, - width: sizeHelper.largeIconSize * 1.5, - margin: EdgeInsets.fromLTRB( - 0, sizeHelper.largePadding, 0, sizeHelper.largePadding), - child: LinearProgressIndicator( - value: fuel, - color: HSLColor.fromColor(Colors.blueAccent) - .withSaturation(fuel) - .toColor(), - semanticsLabel: 'RPM indicator', - ), - ) - ], - ); - } -} - -// The small indicator for the state of each tire. -class _TireWidget extends StatelessWidget { - final String label; - final int value; - final CrossAxisAlignment crossAlign; - - _TireWidget(this.label, this.value, this.crossAlign); - - @override - Widget build(BuildContext context) { - return Column( - crossAxisAlignment: crossAlign, - children: [ - Text( - label, - style: Theme.of(context).textTheme.headline6, - ), - Text( - '$value PSI', - style: Theme.of(context).textTheme.headline4, - ), - ], - ); - } -} |