diff options
author | 2022-12-31 00:34:31 -0500 | |
---|---|---|
committer | 2022-12-31 06:50:16 +0000 | |
commit | 9ba227f63a5f83055910b502ca90bb523950c77b (patch) | |
tree | e8dc553cf3b9264c4081f1bb76a95dd7be2f5afc /lib/Tire_pressure.dart | |
parent | 7e9b0b78a48b4fb26996d67a07277f86b69e18ed (diff) |
Rework Riverpod provider usage
Replace the single Riverpod provider for all vehicle signals with
separate ones for each required signal used directly in the widgets
that require them. This is more in line with recommended Riverpod
practice, and should avoids driving full widget tree rebuilds on
every signal received.
Bug-AGL: SPEC-4660
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ibe1ff26f8cd95cbe9cbb477feaf31c9f4919bf6a
Diffstat (limited to 'lib/Tire_pressure.dart')
-rw-r--r-- | lib/Tire_pressure.dart | 103 |
1 files changed, 82 insertions, 21 deletions
diff --git a/lib/Tire_pressure.dart b/lib/Tire_pressure.dart index 2f68bf3..f3a8e73 100644 --- a/lib/Tire_pressure.dart +++ b/lib/Tire_pressure.dart @@ -1,55 +1,48 @@ // SPDX-License-Identifier: Apache-2.0 -import 'package:dashboard_app/size.dart'; import 'package:flutter/material.dart'; import 'package:percent_indicator/linear_percent_indicator.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:dashboard_app/size.dart'; +import '../vehicle-signals/vss_providers.dart'; - - -class TirePressure extends StatefulWidget { - String tname; - double tpress; +class TirePressure extends StatelessWidget { + String tireName; + double tirePressure; CrossAxisAlignment crossAxisAlignment; MainAxisAlignment mainAxisAlignment; + TirePressure( {Key? key, - required this.tname, - required this.tpress, + required this.tireName, + required this.tirePressure, required this.crossAxisAlignment, required this.mainAxisAlignment}) : super(key: key); @override - State<TirePressure> createState() => _TirePressureState(); -} - -class _TirePressureState extends State<TirePressure> { - @override Widget build(BuildContext context) { return SizedBox( height: SizeConfig.safeBlockVertical * 12, width: SizeConfig.safeBlockHorizontal * 14, child: Column( - mainAxisAlignment: widget.mainAxisAlignment, - + mainAxisAlignment: mainAxisAlignment, children: [ Text( - '${widget.tname}', + '${tireName}', style: SizeConfig.smallnormalfont2, ), Text( - widget.tpress.toString() + ' PSI', + tirePressure.toString() + ' PSI', style: SizeConfig.smallnormalfont, ), LinearPercentIndicator( width: SizeConfig.safeBlockHorizontal * 11, - - progressColor: widget.tpress / 50 > 0.6 ? Colors.green : Colors.red, + progressColor: tirePressure / 50 > 0.6 ? Colors.green : Colors.red, lineHeight: SizeConfig.safeBlockVertical * 1.5, alignment: MainAxisAlignment.center, animateFromLastPercent: true, animation: true, - percent: widget.tpress / 50, - + percent: tirePressure / 50, barRadius: Radius.circular(SizeConfig.fontsize / 4), backgroundColor: Colors.grey, ), @@ -58,3 +51,71 @@ class _TirePressureState extends State<TirePressure> { ); } } + +class FrontLeftTirePressure extends ConsumerWidget { + FrontLeftTirePressure({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final vehicleFrontLeftTP = + ref.watch(vehicleSignalFrontLeftTirePressureProvider); + + return TirePressure( + tireName: 'Left Front', + tirePressure: vehicleFrontLeftTP.pressure, + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.end, + ); + } +} + +class RearLeftTirePressure extends ConsumerWidget { + RearLeftTirePressure({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final vehicleRearLeftTP = + ref.watch(vehicleSignalRearLeftTirePressureProvider); + + return TirePressure( + tireName: 'Left Rear', + tirePressure: vehicleRearLeftTP.pressure, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + ); + } +} + +class FrontRightTirePressure extends ConsumerWidget { + FrontRightTirePressure({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final vehicleFrontRightTP = + ref.watch(vehicleSignalFrontRightTirePressureProvider); + + return TirePressure( + tireName: 'Right Front', + tirePressure: vehicleFrontRightTP.pressure, + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.start, + ); + } +} + +class RearRightTirePressure extends ConsumerWidget { + RearRightTirePressure({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final vehicleRearRightTP = + ref.watch(vehicleSignalRearRightTirePressureProvider); + + return TirePressure( + tireName: 'Right Rear', + tirePressure: vehicleRearRightTP.pressure, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + ); + } +} |