From 62284b55e171bc1b4606b5c2bd4ed8d88a0d2f42 Mon Sep 17 00:00:00 2001 From: yaso Date: Tue, 14 Jan 2025 14:48:41 +0200 Subject: [PATCH] create calc screen with swipe options --- .../mih_packages/calculator/calculator.dart | 194 ++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 Frontend/lib/mih_packages/calculator/calculator.dart diff --git a/Frontend/lib/mih_packages/calculator/calculator.dart b/Frontend/lib/mih_packages/calculator/calculator.dart new file mode 100644 index 00000000..3da3edfc --- /dev/null +++ b/Frontend/lib/mih_packages/calculator/calculator.dart @@ -0,0 +1,194 @@ +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_action.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_body.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_header.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_layout_builder.dart'; +import 'package:Mzansi_Innovation_Hub/mih_objects/arguments.dart'; +import 'package:Mzansi_Innovation_Hub/mih_packages/calculator/simple_calc.dart'; +import 'package:Mzansi_Innovation_Hub/mih_packages/calculator/tip_calc.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_swipe_detector/flutter_swipe_detector.dart'; + +class MIHCalculator extends StatefulWidget { + const MIHCalculator({super.key}); + + @override + State createState() => _MIHCalculatorState(); +} + +class _MIHCalculatorState extends State { + int _selectedIndex = 0; + + MIHAction getActionButton() { + return MIHAction( + icon: const Icon(Icons.arrow_back), + iconSize: 35, + onTap: () { + Navigator.of(context).pop(); + Navigator.of(context).popAndPushNamed( + '/', + arguments: AuthArguments(true, false), + ); + }, + ); + } + + MIHHeader getHeader() { + return const MIHHeader( + headerAlignment: MainAxisAlignment.center, + headerItems: [ + Text( + "", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 25, + ), + ), + ], + ); + } + + MIHHeader getSecAction() { + return MIHHeader( + headerAlignment: MainAxisAlignment.end, + headerItems: [ + //============ Simple Calc ================ + Visibility( + visible: _selectedIndex != 0, + child: IconButton( + onPressed: () { + setState(() { + _selectedIndex = 0; + }); + }, + icon: const Icon( + Icons.calculate, + size: 35, + ), + ), + ), + Visibility( + visible: _selectedIndex == 0, + child: IconButton.filled( + iconSize: 35, + onPressed: () { + setState(() { + _selectedIndex = 0; + }); + }, + icon: const Icon( + Icons.calculate, + ), + ), + ), + //============ Tip Calc ================ + Visibility( + visible: _selectedIndex != 1, + child: IconButton( + onPressed: () { + setState(() { + _selectedIndex = 1; + }); + }, + icon: const Icon( + Icons.money, + size: 35, + ), + ), + ), + Visibility( + visible: _selectedIndex == 1, + child: IconButton.filled( + onPressed: () { + setState(() { + _selectedIndex = 1; + }); + }, + icon: const Icon( + Icons.money, + size: 35, + ), + ), + ), + // //============ Patient Files ================ + // Visibility( + // visible: _selectedIndex != 2, + // child: IconButton( + // onPressed: () { + // setState(() { + // _selectedIndex = 2; + // }); + // }, + // icon: const Icon( + // Icons.file_present, + // size: 35, + // ), + // ), + // ), + // Visibility( + // visible: _selectedIndex == 2, + // child: IconButton.filled( + // onPressed: () { + // setState(() { + // _selectedIndex = 2; + // }); + // }, + // icon: const Icon( + // Icons.file_present, + // size: 35, + // ), + // ), + // ), + ], + ); + } + + MIHBody getBody() { + return MIHBody( + borderOn: true, + bodyItems: [showSelection(_selectedIndex)], + ); + } + + Widget showSelection(int index) { + if (index == 0) { + return const SimpleCalc(); + } else if (index == 1) { + return const TipCalc(); + } else { + return const Placeholder(); + } + } + + @override + Widget build(BuildContext context) { + return SwipeDetector( + onSwipeLeft: (offset) { + if (_selectedIndex < 1) { + setState(() { + _selectedIndex += 1; + }); + } + //print("swipe left"); + }, + onSwipeRight: (offset) { + if (_selectedIndex > 0) { + setState(() { + _selectedIndex -= 1; + }); + } + //print("swipe right"); + }, + child: MIHLayoutBuilder( + actionButton: getActionButton(), + header: getHeader(), + secondaryActionButton: getSecAction(), + body: getBody(), + actionDrawer: null, + secondaryActionDrawer: null, + bottomNavBar: null, + pullDownToRefresh: false, + onPullDown: () async {}, + ), + ); + } +}