diff options
Diffstat (limited to 'lib/presentation')
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(), + ], ), ); } |