aboutsummaryrefslogtreecommitdiffstats
path: root/lib/presentation
diff options
context:
space:
mode:
Diffstat (limited to 'lib/presentation')
-rw-r--r--lib/presentation/screens/dashboard/widgets/child_lock.dart117
-rw-r--r--lib/presentation/screens/dashboard/widgets/dashboard_content.dart31
-rw-r--r--lib/presentation/screens/dashboard/widgets/hybrid/hybrid.dart8
-rw-r--r--lib/presentation/screens/dashboard/widgets/hybrid_mode.dart41
4 files changed, 112 insertions, 85 deletions
diff --git a/lib/presentation/screens/dashboard/widgets/child_lock.dart b/lib/presentation/screens/dashboard/widgets/child_lock.dart
index b8701d7..c495fca 100644
--- a/lib/presentation/screens/dashboard/widgets/child_lock.dart
+++ b/lib/presentation/screens/dashboard/widgets/child_lock.dart
@@ -16,33 +16,41 @@ class ChildLockLeft extends ConsumerWidget {
debugPrint('Tapped child lock left');
ref.read(vehicleProvider.notifier).setChildLock(side: 'left');
},
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.end,
- children: [
- const Text(
- 'Child Lock',
- style: TextStyle(
- fontSize: 26, // Set the font size to 26
- ),
- ),
- Wrap(
- crossAxisAlignment: WrapCrossAlignment.center,
- children: [
- Icon(
- isChildLockActiveLeft ? Icons.lock : Icons.lock_open,
- color: isChildLockActiveLeft ? Colors.white : Colors.redAccent,
- size: 16,
+ child: Container(
+ height: 120,
+ width: 150,
+ color: Colors.transparent,
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.end,
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ const Text(
+ 'Child Lock',
+ style: TextStyle(
+ fontSize: 26, // Set the font size to 26
),
- Text(
- isChildLockActiveLeft ? 'Activated' : 'Unlocked',
- style: TextStyle(
- color: isChildLockActiveLeft ? Colors.white : Colors.redAccent,
- fontSize: 26, // Set the font size to 26
+ ),
+ Wrap(
+ crossAxisAlignment: WrapCrossAlignment.center,
+ children: [
+ Icon(
+ isChildLockActiveLeft ? Icons.lock : Icons.lock_open,
+ color:
+ isChildLockActiveLeft ? Colors.white : Colors.redAccent,
+ size: 16,
),
- ),
- ],
- ),
- ],
+ Text(
+ isChildLockActiveLeft ? 'Activated' : 'Unlocked',
+ style: TextStyle(
+ color:
+ isChildLockActiveLeft ? Colors.white : Colors.redAccent,
+ fontSize: 26, // Set the font size to 26
+ ),
+ ),
+ ],
+ ),
+ ],
+ ),
),
);
}
@@ -63,33 +71,42 @@ class ChildLockRight extends ConsumerWidget {
debugPrint('Tapped child lock right');
ref.read(vehicleProvider.notifier).setChildLock(side: 'right');
},
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- const Text(
- 'Child Lock',
- style: TextStyle(
- fontSize: 26, // Set the font size to 26
+ child: Container(
+ height: 120,
+ width: 150,
+ color: Colors.transparent,
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ const Text(
+ 'Child Lock',
+ style: TextStyle(
+ fontSize: 26, // Set the font size to 26
+ ),
),
- ),
- Wrap(
- crossAxisAlignment: WrapCrossAlignment.center,
- children: [
- Text(
- isChildLockActiveRight ? 'Activated' : 'Unlocked',
- style: TextStyle(
- color: isChildLockActiveRight ? Colors.white : Colors.redAccent,
- fontSize: 26, // Set the font size to 26
+ Wrap(
+ crossAxisAlignment: WrapCrossAlignment.center,
+ children: [
+ Text(
+ isChildLockActiveRight ? 'Activated' : 'Unlocked',
+ style: TextStyle(
+ color: isChildLockActiveRight
+ ? Colors.white
+ : Colors.redAccent,
+ fontSize: 26, // Set the font size to 26
+ ),
),
- ),
- Icon(
- isChildLockActiveRight ? Icons.lock : Icons.lock_open,
- color: isChildLockActiveRight ? Colors.white : Colors.redAccent,
- size: 16,
- ),
- ],
- ),
- ],
+ Icon(
+ isChildLockActiveRight ? Icons.lock : Icons.lock_open,
+ color:
+ isChildLockActiveRight ? Colors.white : Colors.redAccent,
+ size: 16,
+ ),
+ ],
+ ),
+ ],
+ ),
),
);
}
diff --git a/lib/presentation/screens/dashboard/widgets/dashboard_content.dart b/lib/presentation/screens/dashboard/widgets/dashboard_content.dart
index 74f0d2a..28cf944 100644
--- a/lib/presentation/screens/dashboard/widgets/dashboard_content.dart
+++ b/lib/presentation/screens/dashboard/widgets/dashboard_content.dart
@@ -1,3 +1,4 @@
+import 'dart:async';
import 'dart:math';
import 'package:flutter_ics_homescreen/export.dart';
@@ -14,6 +15,7 @@ class DashBoardState extends ConsumerState<DashBoard>
late AnimationController _animationController;
late Animation<double> _animation;
static bool _isAnimationPlayed = false;
+ late Timer timer;
@override
void initState() {
@@ -36,11 +38,21 @@ class DashBoardState extends ConsumerState<DashBoard>
_isAnimationPlayed = true;
});
}
+
+ if (randomHybridAnimation) {
+ timer = Timer.periodic(const Duration(seconds: 5), (timer) {
+ Random random = Random();
+ int randomState = random.nextInt(4);
+ var hybridState = HybridState.values[randomState];
+ ref.read(hybridStateProvider.notifier).setHybridState(hybridState);
+ });
+ }
}
@override
void dispose() {
_animationController.dispose();
+ timer.cancel();
super.dispose();
}
@@ -58,11 +70,11 @@ class DashBoardState extends ConsumerState<DashBoard>
Widget fadeContent = FadeTransition(
opacity: _animation,
- child: Column(
+ child: const Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
- const Row(
+ Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
//mainAxisSize: MainAxisSize.max,
children: [
@@ -71,24 +83,15 @@ class DashBoardState extends ConsumerState<DashBoard>
FuelProgressIndicator(),
],
),
- GestureDetector(
- onTap: () {
- Random random = Random();
- int randomState = random.nextInt(4);
- var hybridState = HybridState.values[randomState];
- ref
- .read(hybridtateProvider.notifier)
- .setHybridState(hybridState);
- },
- child: const HybridModel()),
- const Row(
+ HybridModel(),
+ Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TemperatureWidget(),
RangeWidget(),
],
),
- const CarStatus(),
+ CarStatus(),
],
));
diff --git a/lib/presentation/screens/dashboard/widgets/hybrid/hybrid.dart b/lib/presentation/screens/dashboard/widgets/hybrid/hybrid.dart
index b6844de..6badf62 100644
--- a/lib/presentation/screens/dashboard/widgets/hybrid/hybrid.dart
+++ b/lib/presentation/screens/dashboard/widgets/hybrid/hybrid.dart
@@ -21,7 +21,7 @@ class TopArrow extends StatelessWidget {
return Align(
alignment: const Alignment(0, -0.75),
child: Consumer(builder: (context, ref, child) {
- final state = ref.watch(hybridtateProvider.select((hybrid) => hybrid));
+ final state = ref.watch(hybridStateProvider.select((hybrid) => hybrid));
Widget? widget;
switch (state.topArrowState) {
case ArrowState.blue:
@@ -56,7 +56,7 @@ class LeftArrow extends StatelessWidget {
return Align(
alignment: const Alignment(-0.7, 0.5),
child: Consumer(builder: (context, ref, child) {
- final state = ref.watch(hybridtateProvider.select((hybrid) => hybrid));
+ final state = ref.watch(hybridStateProvider.select((hybrid) => hybrid));
Widget? widget;
switch (state.leftArrowState) {
case ArrowState.blue:
@@ -92,7 +92,7 @@ class RightArrow extends StatelessWidget {
return Align(
alignment: const Alignment(0.70, 0.5),
child: Consumer(builder: (context, ref, child) {
- final state = ref.watch(hybridtateProvider.select((hybrid) => hybrid));
+ final state = ref.watch(hybridStateProvider.select((hybrid) => hybrid));
Widget? widget;
switch (state.rightArrowState) {
@@ -131,7 +131,7 @@ class BatteryHybrid extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final batteryState =
- ref.watch(hybridtateProvider.select((hybrid) => hybrid.batteryState));
+ ref.watch(hybridStateProvider.select((hybrid) => hybrid.batteryState));
return Align(
alignment: const Alignment(0, 0.8),
child: SvgPicture.asset(
diff --git a/lib/presentation/screens/dashboard/widgets/hybrid_mode.dart b/lib/presentation/screens/dashboard/widgets/hybrid_mode.dart
index 9a657b8..f5f1286 100644
--- a/lib/presentation/screens/dashboard/widgets/hybrid_mode.dart
+++ b/lib/presentation/screens/dashboard/widgets/hybrid_mode.dart
@@ -1,29 +1,36 @@
import 'package:flutter_ics_homescreen/export.dart';
-class HybridModel extends StatefulWidget {
+class HybridModel extends ConsumerStatefulWidget {
const HybridModel({super.key});
@override
- State<HybridModel> createState() => _HybridModelState();
+ HybridModelState createState() => HybridModelState();
}
-class _HybridModelState extends State<HybridModel> {
+class HybridModelState extends ConsumerState<HybridModel> {
+
@override
Widget build(BuildContext context) {
-
- return GestureDetector(
- child: const SizedBox(
- width: 500,
- height: 500,
- child: Stack(
- children: [
- HybridBackround(),
- TopArrow(),
- LeftArrow(),
- RightArrow(),
- BatteryHybrid(),
- ],
- ),
+ if (!randomHybridAnimation) {
+ ref.listen<Vehicle>(vehicleProvider, (Vehicle? previous, Vehicle next) {
+ ref.watch(hybridStateProvider.notifier).updateHybridState(
+ next.speed,
+ next.engineSpeed,
+ false); //TODO get brake value and improve state logic
+ });
+ }
+
+ return const SizedBox(
+ width: 500,
+ height: 500,
+ child: Stack(
+ children: [
+ HybridBackround(),
+ TopArrow(),
+ LeftArrow(),
+ RightArrow(),
+ BatteryHybrid(),
+ ],
),
);
}