summaryrefslogtreecommitdiffstats
path: root/lib/presentation
diff options
context:
space:
mode:
Diffstat (limited to 'lib/presentation')
-rw-r--r--lib/presentation/router/routes/routes.dart2
-rw-r--r--lib/presentation/screens/dashboard/widgets/car_status.dart95
-rw-r--r--lib/presentation/screens/dashboard/widgets/circle_indicator.dart2
-rw-r--r--lib/presentation/screens/dashboard/widgets/range.dart19
-rw-r--r--lib/presentation/screens/settings/settings_screens/units/distance/distance_unit_screen.dart11
-rw-r--r--lib/presentation/screens/settings/settings_screens/units/pressure/pressure_unit_screen.dart121
-rw-r--r--lib/presentation/screens/settings/settings_screens/units/units_screen.dart16
7 files changed, 205 insertions, 61 deletions
diff --git a/lib/presentation/router/routes/routes.dart b/lib/presentation/router/routes/routes.dart
index 45a1a14..328d495 100644
--- a/lib/presentation/router/routes/routes.dart
+++ b/lib/presentation/router/routes/routes.dart
@@ -45,6 +45,8 @@ List<Page<dynamic>> onGenerateAppViewPages(
return [DistanceUnitPage.page()];
case AppState.tempUnit:
return [TemperatureUnitPage.page()];
+ case AppState.pressureUnit:
+ return [PressureUnitPage.page()];
case AppState.clock:
return [ClockPage.page()];
case AppState.newProfile:
diff --git a/lib/presentation/screens/dashboard/widgets/car_status.dart b/lib/presentation/screens/dashboard/widgets/car_status.dart
index b824871..604d404 100644
--- a/lib/presentation/screens/dashboard/widgets/car_status.dart
+++ b/lib/presentation/screens/dashboard/widgets/car_status.dart
@@ -4,25 +4,13 @@ import 'package:gradient_borders/gradient_borders.dart';
import '../../../../export.dart';
-class CarStatus extends ConsumerStatefulWidget {
+class CarStatus extends ConsumerWidget {
const CarStatus({super.key});
@override
- CarStatusState createState() => CarStatusState();
-}
-
-class CarStatusState extends ConsumerState<CarStatus> {
- @override
- void initState() {
- super.initState();
- // "ref" can be used in all life-cycles of a StatefulWidget.
- //ref.read(counterProvider);
- }
-
- @override
- Widget build(BuildContext context) {
+ Widget build(BuildContext context, WidgetRef Ref) {
return Padding(
- padding: const EdgeInsets.fromLTRB(0,0,0,84),
+ padding: const EdgeInsets.fromLTRB(0, 0, 0, 84),
child: SizedBox(
height: 440,
width: 652,
@@ -59,6 +47,18 @@ class LeftCarStatus extends ConsumerWidget {
ref.watch(vehicleProvider.select((vehicle) => vehicle.frontLeftTire));
final rearLeftTire =
ref.watch(vehicleProvider.select((vehicle) => vehicle.rearLeftTire));
+ final unit =
+ ref.watch(unitStateProvider.select((unit) => unit.pressureUnit));
+
+ String frontLeftTireString = "";
+ String rearLeftTireString = "";
+ if (unit == PressureUnit.psi) {
+ frontLeftTireString = (frontLeftTire * 0.145038).toStringAsFixed(1);
+ rearLeftTireString = (rearLeftTire * 0.145038).toStringAsFixed(1);
+ } else {
+ frontLeftTireString = frontLeftTire.toString();
+ rearLeftTireString = rearLeftTire.toString();
+ }
return Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
@@ -67,22 +67,21 @@ class LeftCarStatus extends ConsumerWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
- PSIProgressIndicator(value: frontLeftTire.toDouble()),
+ TirePressureProgressIndicator(value: frontLeftTire.toDouble()),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text(
- frontLeftTire.toStringAsFixed(1),
+ frontLeftTireString,
style: GoogleFonts.brunoAce(
- textStyle: TextStyle(
- color: Colors.white, fontSize: 44),
+ textStyle: TextStyle(color: Colors.white, fontSize: 44),
),
),
SizedBox(
width: 5,
),
- PSIWidget(),
+ TirePressureUnitWidget(),
],
),
],
@@ -91,22 +90,21 @@ class LeftCarStatus extends ConsumerWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
- PSIProgressIndicator(value: rearLeftTire.toDouble()),
+ TirePressureProgressIndicator(value: rearLeftTire.toDouble()),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text(
- rearLeftTire.toStringAsFixed(1),
+ rearLeftTireString,
style: GoogleFonts.brunoAce(
- textStyle: TextStyle(
- color: Colors.white, fontSize: 44),
+ textStyle: TextStyle(color: Colors.white, fontSize: 44),
),
),
SizedBox(
width: 5,
),
- PSIWidget(),
+ TirePressureUnitWidget(),
],
),
],
@@ -127,6 +125,18 @@ class RightCarStatus extends ConsumerWidget {
ref.watch(vehicleProvider.select((vehicle) => vehicle.frontRightTire));
final rearRightTire =
ref.watch(vehicleProvider.select((vehicle) => vehicle.rearRightTire));
+ final unit =
+ ref.watch(unitStateProvider.select((unit) => unit.pressureUnit));
+
+ String frontRightTireString = "";
+ String rearRightTireString = "";
+ if (unit == PressureUnit.psi) {
+ frontRightTireString = (frontRightTire * 0.145038).toStringAsFixed(1);
+ rearRightTireString = (rearRightTire * 0.145038).toStringAsFixed(1);
+ } else {
+ frontRightTireString = frontRightTire.toString();
+ rearRightTireString = rearRightTire.toString();
+ }
return Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
@@ -134,23 +144,21 @@ class RightCarStatus extends ConsumerWidget {
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
-
children: [
- PSIProgressIndicator(value: frontRightTire.toDouble()),
+ TirePressureProgressIndicator(value: frontRightTire.toDouble()),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
- frontRightTire.toStringAsFixed(1),
+ frontRightTireString,
style: GoogleFonts.brunoAce(
- textStyle: TextStyle(
- color: Colors.white, fontSize: 44),
+ textStyle: TextStyle(color: Colors.white, fontSize: 44),
),
),
SizedBox(
width: 5,
),
- PSIWidget(),
+ TirePressureUnitWidget(),
],
),
],
@@ -159,22 +167,21 @@ class RightCarStatus extends ConsumerWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- PSIProgressIndicator(value: rearRightTire.toDouble()),
+ TirePressureProgressIndicator(value: rearRightTire.toDouble()),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
- rearRightTire.toStringAsFixed(1),
+ rearRightTireString,
style: GoogleFonts.brunoAce(
- textStyle: TextStyle(
- color: Colors.white, fontSize: 44),
+ textStyle: TextStyle(color: Colors.white, fontSize: 44),
),
),
SizedBox(
width: 5,
),
- PSIWidget(),
+ TirePressureUnitWidget(),
],
),
],
@@ -184,9 +191,9 @@ class RightCarStatus extends ConsumerWidget {
}
}
-class PSIProgressIndicator extends StatelessWidget {
+class TirePressureProgressIndicator extends StatelessWidget {
final double value;
- const PSIProgressIndicator({
+ const TirePressureProgressIndicator({
Key? key,
required this.value, // Require the value to be passed
}) : super(key: key);
@@ -208,7 +215,6 @@ class PSIProgressIndicator extends StatelessWidget {
LinearGradient(colors: const [Colors.white30, Colors.white]),
),
),
-
),
Positioned(
left: 3,
@@ -231,17 +237,20 @@ class PSIProgressIndicator extends StatelessWidget {
}
}
-class PSIWidget extends StatelessWidget {
- const PSIWidget({
+class TirePressureUnitWidget extends ConsumerWidget {
+ const TirePressureUnitWidget({
super.key,
});
@override
- Widget build(BuildContext context) {
+ Widget build(BuildContext context, WidgetRef ref) {
+ final unit =
+ ref.watch(unitStateProvider.select((unit) => unit.pressureUnit));
+
return Padding(
padding: const EdgeInsets.only(left: 4.0, right: 1.0, bottom: 2.0),
child: Text(
- 'PSI',
+ unit == PressureUnit.kilopascals ? 'kPa' : 'PSI',
style: TextStyle(
fontSize: 26,
),
diff --git a/lib/presentation/screens/dashboard/widgets/circle_indicator.dart b/lib/presentation/screens/dashboard/widgets/circle_indicator.dart
index 6ff3613..e3a3ba5 100644
--- a/lib/presentation/screens/dashboard/widgets/circle_indicator.dart
+++ b/lib/presentation/screens/dashboard/widgets/circle_indicator.dart
@@ -189,7 +189,7 @@ class SpeedProgressIndicatorState extends ConsumerState<SpeedProgressIndicator>
),
Text(
- unit == DistanceUnit.kilometers ? 'Km/h' : 'Mph',
+ unit == DistanceUnit.kilometers ? 'km/h' : 'mph',
style: const TextStyle(color: Colors.white, fontSize: 40),
),
],
diff --git a/lib/presentation/screens/dashboard/widgets/range.dart b/lib/presentation/screens/dashboard/widgets/range.dart
index aea92af..34435ae 100644
--- a/lib/presentation/screens/dashboard/widgets/range.dart
+++ b/lib/presentation/screens/dashboard/widgets/range.dart
@@ -10,8 +10,12 @@ class RangeWidget extends ConsumerWidget {
final range = ref.watch(vehicleProvider.select((vehicle) => vehicle.range));
final unit =
ref.watch(unitStateProvider.select((unit) => unit.distanceUnit));
+ final rangeString = (unit == DistanceUnit.kilometers)
+ ? (range / 1000.0).toStringAsFixed(0)
+ : (range / 1609.0).toStringAsFixed(0);
+
return Container(
- height:130,
+ height: 130,
width: 306,
// padding: const EdgeInsets.all(10),
decoration: const ShapeDecoration(
@@ -54,24 +58,19 @@ class RangeWidget extends ConsumerWidget {
),
RichText(
text: TextSpan(
-
- text: '$range',
+ text: rangeString,
style: GoogleFonts.brunoAce(
-
- textStyle:
- const TextStyle(
+ textStyle: const TextStyle(
color: Colors.white,
fontSize: 44,
),
),
children: <TextSpan>[
TextSpan(
- text:
- unit == DistanceUnit.kilometers ? ' Km' : ' Mi',
+ text: unit == DistanceUnit.kilometers ? ' km' : ' mi',
style: GoogleFonts.brunoAce(
textStyle: const TextStyle(
- color: Color(0xFFC1D8FF),
- fontSize: 38),
+ color: Color(0xFFC1D8FF), fontSize: 38),
),
),
]),
diff --git a/lib/presentation/screens/settings/settings_screens/units/distance/distance_unit_screen.dart b/lib/presentation/screens/settings/settings_screens/units/distance/distance_unit_screen.dart
index 3e9c135..3d84604 100644
--- a/lib/presentation/screens/settings/settings_screens/units/distance/distance_unit_screen.dart
+++ b/lib/presentation/screens/settings/settings_screens/units/distance/distance_unit_screen.dart
@@ -11,7 +11,6 @@ class DistanceUnitPage extends ConsumerWidget {
ref.watch(unitStateProvider.select((unit) => unit.distanceUnit));
return Scaffold(
-
body: Column(
children: [
CommonTitle(
@@ -48,13 +47,14 @@ class DistanceUnitPage extends ConsumerWidget {
contentPadding: const EdgeInsets.symmetric(
horizontal: 16.0, vertical: 40.0),
leading: Text(
- 'Kilometers',
+ 'kilometers',
style: Theme.of(context).textTheme.titleMedium,
),
//title: Text(widget.title),
//enabled: isSwitchOn,
trailing: unit == DistanceUnit.kilometers
- ? const Icon(Icons.done,
+ ? const Icon(
+ Icons.done,
color: AGLDemoColors.periwinkleColor,
size: 48,
)
@@ -90,13 +90,14 @@ class DistanceUnitPage extends ConsumerWidget {
contentPadding: const EdgeInsets.symmetric(
horizontal: 16.0, vertical: 40.0),
leading: Text(
- 'Miles',
+ 'miles',
style: Theme.of(context).textTheme.titleMedium,
),
//title: Text(widget.title),
//enabled: isSwitchOn,
trailing: unit == DistanceUnit.miles
- ? const Icon(Icons.done,
+ ? const Icon(
+ Icons.done,
color: AGLDemoColors.periwinkleColor,
size: 48,
)
diff --git a/lib/presentation/screens/settings/settings_screens/units/pressure/pressure_unit_screen.dart b/lib/presentation/screens/settings/settings_screens/units/pressure/pressure_unit_screen.dart
new file mode 100644
index 0000000..5be8a05
--- /dev/null
+++ b/lib/presentation/screens/settings/settings_screens/units/pressure/pressure_unit_screen.dart
@@ -0,0 +1,121 @@
+import 'package:flutter_ics_homescreen/export.dart';
+
+class PressureUnitPage extends ConsumerWidget {
+ const PressureUnitPage({super.key});
+
+ static Page<void> page() =>
+ const MaterialPage<void>(child: PressureUnitPage());
+ @override
+ Widget build(BuildContext context, WidgetRef ref) {
+ final unit =
+ ref.watch(unitStateProvider.select((unit) => unit.pressureUnit));
+
+ return Scaffold(
+ body: Column(
+ children: [
+ CommonTitle(
+ title: 'Pressure',
+ hasBackButton: true,
+ onPressed: () {
+ context.flow<AppState>().update((state) => AppState.units);
+ },
+ ),
+ Expanded(
+ child: Padding(
+ padding: const EdgeInsets.symmetric(vertical: 0, horizontal: 144),
+ child: ListView(
+ children: [
+ Container(
+ height: 130,
+ decoration: BoxDecoration(
+ gradient: LinearGradient(
+ begin: Alignment.centerLeft,
+ end: Alignment.centerRight,
+ stops: unit == PressureUnit.kilopascals
+ ? [0, 0.01, 0.8]
+ : [0.1, 1],
+ colors: unit == PressureUnit.kilopascals
+ ? <Color>[
+ Colors.white,
+ Colors.blue,
+ const Color.fromARGB(16, 41, 98, 255)
+ ]
+ : <Color>[Colors.black, Colors.black12]),
+ ),
+ child: ListTile(
+ minVerticalPadding: 0.0,
+ contentPadding: const EdgeInsets.symmetric(
+ horizontal: 16.0, vertical: 40.0),
+ leading: Text(
+ 'kilopascals',
+ style: Theme.of(context).textTheme.titleMedium,
+ ),
+ //title: Text(widget.title),
+ //enabled: isSwitchOn,
+ trailing: unit == PressureUnit.kilopascals
+ ? const Icon(
+ Icons.done,
+ color: AGLDemoColors.periwinkleColor,
+ size: 48,
+ )
+ : null,
+ onTap: () {
+ ref
+ .read(unitStateProvider.notifier)
+ .setPressureUnit(PressureUnit.kilopascals);
+ }),
+ ),
+ const SizedBox(
+ height: 5,
+ ),
+ Container(
+ height: 130,
+ decoration: BoxDecoration(
+ gradient: LinearGradient(
+ begin: Alignment.centerLeft,
+ end: Alignment.centerRight,
+ stops: unit == PressureUnit.psi
+ ? [0, 0.01, 0.8]
+ : [0.1, 1],
+ colors: unit == PressureUnit.psi
+ ? <Color>[
+ Colors.white,
+ Colors.blue,
+ const Color.fromARGB(16, 41, 98, 255)
+ ]
+ : <Color>[Colors.black, Colors.black12]),
+ ),
+ child: ListTile(
+ minVerticalPadding: 0.0,
+ contentPadding: const EdgeInsets.symmetric(
+ horizontal: 16.0, vertical: 40.0),
+ leading: Text(
+ 'PSI',
+ style: Theme.of(context).textTheme.titleMedium,
+ ),
+ //title: Text(widget.title),
+ //enabled: isSwitchOn,
+ trailing: unit == PressureUnit.psi
+ ? const Icon(
+ Icons.done,
+ color: AGLDemoColors.periwinkleColor,
+ size: 38,
+ )
+ : null,
+
+ onTap: () {
+ ref
+ .read(unitStateProvider.notifier)
+ .setPressureUnit(PressureUnit.psi);
+ },
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/presentation/screens/settings/settings_screens/units/units_screen.dart b/lib/presentation/screens/settings/settings_screens/units/units_screen.dart
index 1c6e37c..fde7505 100644
--- a/lib/presentation/screens/settings/settings_screens/units/units_screen.dart
+++ b/lib/presentation/screens/settings/settings_screens/units/units_screen.dart
@@ -30,8 +30,8 @@ class UnitsPage extends ConsumerWidget {
icon: Icons.calendar_month_outlined,
title: 'Distance',
unitName: unit.distanceUnit == DistanceUnit.kilometers
- ? 'Kilometers'
- : 'Miles',
+ ? 'kilometers'
+ : 'miles',
hasSwich: false,
voidCallback: () async {
context
@@ -50,6 +50,18 @@ class UnitsPage extends ConsumerWidget {
.flow<AppState>()
.update((next) => AppState.tempUnit);
}),
+ UnitsTile(
+ icon: Icons.straighten,
+ title: 'Pressure',
+ unitName: unit.pressureUnit == PressureUnit.kilopascals
+ ? 'kilopascals'
+ : 'PSI',
+ hasSwich: true,
+ voidCallback: () {
+ context
+ .flow<AppState>()
+ .update((next) => AppState.pressureUnit);
+ }),
],
),
),