From 5559cdb261cfd3e69daa2349906f071dc2491c0d Mon Sep 17 00:00:00 2001 From: Hritik Chouhan Date: Thu, 1 Sep 2022 19:15:56 +0200 Subject: Upload Flutter-HVAC application for IVI Flutter hvac app which sets value to KUKSA.VAL like Fan speed,left and right zone climate temperature, AC vent direction, Air circulation,Front and Rear Wind shield defrost. Update UI and removed Unused code. Bug-AGL: SPEC-4546 Change-Id: I57f7a9a2954520f4bb781a5ec02be612d72cf404 Signed-off-by: Hritik Chouhan --- lib/Buttons/auto.dart | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 lib/Buttons/auto.dart (limited to 'lib/Buttons/auto.dart') diff --git a/lib/Buttons/auto.dart b/lib/Buttons/auto.dart new file mode 100644 index 0000000..536a117 --- /dev/null +++ b/lib/Buttons/auto.dart @@ -0,0 +1,116 @@ +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_hvac/kuksa-server/vehicle-provider.dart'; + +import '../size.dart'; + +class Auto extends ConsumerStatefulWidget { + WebSocket socket; + String serverPath; + Auto({ + Key? key, + required this.serverPath, + required this.socket, + }) : super(key: key); + + @override + _AutoState createState() => _AutoState(); +} + +class _AutoState extends ConsumerState with SingleTickerProviderStateMixin { + late AnimationController _controller; + late bool isAutoActive; + late Animation _colorAnimation; + + @override + void initState() { + super.initState(); + + _controller = AnimationController( + duration: Duration(milliseconds: 500), + vsync: this, + ); + + _colorAnimation = + ColorTween(begin: Colors.lightBlueAccent, end: Colors.green) + .animate(_controller); + + _controller.addListener(() { + + }); + + + } + + // dismiss the animation when widget exits screen + @override + void dispose() { + super.dispose(); + _controller.dispose(); + } + + @override + Widget build(BuildContext context) { + isAutoActive = ref.watch(vehicleProvider).isAutoActive; + return AnimatedBuilder( + animation: _controller, + builder: (BuildContext context, _) { + return InkWell( + child: AnimatedContainer( + constraints: BoxConstraints( + maxHeight: SizeConfig.screenHeight*0.10, + maxWidth: SizeConfig.screenWidth*0.15, + ), + + + decoration: BoxDecoration( + gradient: isAutoActive + ? RadialGradient( + colors: [Colors.black, Colors.lightBlue], + radius: 2, + ) + : null, + + + border: Border.all( + color: Colors.white, + width: 2, + ), + borderRadius: BorderRadius.circular(SizeConfig.safeBlockVertical*2), + ), + duration: Duration(seconds: 1), + child: AnimatedContainer( + duration: Duration(milliseconds: 100), + margin: EdgeInsets.all(SizeConfig.blockSizeVertical*2), + child: Container( + width: SizeConfig.screenWidth*0.15, + height: SizeConfig.screenHeight*0.10, + child: FittedBox( + fit: BoxFit.fill, + child: Text( + 'AUTO', + style: TextStyle( + color: _colorAnimation.value, + fontWeight: FontWeight.w700, + // fontSize: SizeConfig.fontsize*4, + ), + ), + ), + ), + ), + ), + onTap: () { + isAutoActive ? _controller.reverse() : _controller.forward(); + ref + .read(vehicleProvider.notifier) + .update(isAutoActive: !isAutoActive); + }, + ); + + }); + } +} -- cgit