A comprehensive Flutter application that combines a powerful calculator with multiple unit converters, providing users with essential mathematical and conversion tools in one convenient app, built with Clean Architecture principles and featuring a stunning UI.
- ๐งฎ Advanced Calculator: Perform basic and advanced mathematical operations
- ๐ Multiple Converters: Convert between various units (Volume, Data, Age, Discount, Time, Temperature)
- โ Input Validation: Smart validation for accurate calculations and conversions
- ๐จ Beautiful UI: Clean, modern interface with intuitive design
- ๐ฑ Responsive Design: Adaptive UI that works seamlessly across different screen sizes
- โก Fast & Efficient: Optimized performance with proper state management
- ๐๏ธ Clean Architecture: Well-structured codebase following Clean Architecture principles
- Color Scheme: Modern theme with elegant styling
- Typography: Poppins font family for a modern, clean look
- Material Design: Latest Material Design guidelines
- Smooth Interactions: Engaging user experience with responsive feedback
This project follows Clean Architecture principles with clear separation of concerns:
lib/
โโโ core/
โ โโโ theme.dart # App-wide theme configurations
โโโ data/
โ โโโ models/
โ โ โโโ calculation_model.dart # Data model for calculations
โ โโโ repositories/
โ โโโ calculator_repository_impl.dart # Calculator repository implementation
โ โโโ converter_repository_impl.dart # Converter repository implementation
โโโ domain/
โ โโโ entities/
โ โ โโโ calculation.dart # Calculation entity
โ โ โโโ converter.dart # Converter entity
โ โโโ repository/
โ โ โโโ calculator_repository.dart # Calculator repository interface
โ โ โโโ converter_repository.dart # Converter repository interface
โ โโโ usecases/
โ โโโ calculate.dart # Calculate use case
โ โโโ convert_unit.dart # Convert unit use case
โโโ presentation/
โโโ controller/
โ โโโ calculator_controller.dart # Calculator state management
โ โโโ converter_controller.dart # Converter state management
โโโ Screen/
โ โโโ age_calculator_screen.dart # Age calculator screen
โ โโโ calculator_screen.dart # Main calculator screen
โ โโโ converter_screen.dart # Converter selection screen
โ โโโ data_converter_screen.dart # Data converter screen
โ โโโ discount_calculator_screen.dart # Discount calculator screen
โ โโโ homepage_screen.dart # Home page screen
โ โโโ onboarding_screen.dart # Onboarding screen
โ โโโ splash_screen.dart # Splash screen
โ โโโ standard_converter_screen.dart # Standard converter screen
โ โโโ temperature_converter_screen.dart # Temperature converter screen
โ โโโ time_converter_screen.dart # Time converter screen
โ โโโ volume_converter_screen.dart # Volume converter screen
โโโ widgets/
โโโ calculator_button_widget.dart # Calculator button widget
โโโ Clickable_converter_widget.dart # Clickable converter widget
โโโ input_card_widget.dart # Input card widget
โโโ output_card_widet.dart # Output card widget
- Domain Layer: Contains business logic, entities, and repository interfaces
- Data Layer: Implements repositories and handles data operations
- Presentation Layer: UI components, state management, and user interactions
- Flutter SDK: ^3.9.2
- GetX: ^4.7.2 - State management
- Sqflite: ^2.4.2 - Local database
- Flutter SVG: ^2.2.2 - SVG icon support
- Clean Architecture: Design pattern for maintainable code
- Flutter SDK (^3.9.2)
- Dart SDK
- Android Studio / VS Code
- Android device or emulator / iOS device or simulator
-
Clone the repository
git clone https://github.com/yourusername/smart_calculator.git cd smart_calculator -
Install dependencies
flutter pub get
-
Run the app
flutter run
- Launch the app and navigate to the Calculator tab
- Enter numbers using the keypad
- Use operators (+, -, ร, รท) to build expressions
- Tap "=" to calculate the result
- Use AC to clear all input or backspace to delete last character
- Navigate to Converter tab
- Select a converter (Volume, Data, Age, Discount, Time, Temperature)
- Enter input value and select units
- View instant conversion results
The calculator supports a wide range of mathematical operations:
- Basic Arithmetic: Addition, subtraction, multiplication, division
- Advanced Operations: Percentage calculations, decimal handling
- Real-time Display: Live expression preview as you type
- Error Handling: Smart validation to prevent invalid operations
- History: Track previous calculations (if implemented)
Comprehensive unit conversion system with multiple categories:
- Volume: Conversions between liters, gallons, milliliters, cubic meters, etc.
- Data: Digital storage units (Bytes, KB, MB, GB, TB, PB)
- Age: Age calculations in years, months, days, hours
- Discount: Calculate discounts, final prices, and savings percentages
- Time: Time conversions (hours, minutes, seconds, days, weeks)
- Temperature: Temperature scales (Celsius, Fahrenheit, Kelvin)
- Standard Units: Additional standard unit conversions
Implements GetX for efficient state management:
- Reactive Programming: Real-time UI updates
- Controller Pattern: Separate business logic from UI
- Dependency Injection: Clean separation of concerns
- Performance Optimized: Minimal rebuilds and efficient data flow
Comprehensive theming with:
- Custom Color Scheme: Modern, accessible color palette
- Poppins Font Family: Clean, readable typography
- Material Design 3: Latest design guidelines
- Dark/Light Mode: Adaptive theming (if implemented)
- Consistent Styling: Unified look across all components
Smart validation features:
- Real-time Feedback: Immediate error detection
- Format Checking: Ensures correct input formats
- Boundary Validation: Prevents invalid ranges
- User Guidance: Helpful error messages and hints
Adaptive UI that works on:
- Mobile Devices: Optimized for phones and tablets
- Different Screen Sizes: Flexible layouts
- Orientation Changes: Portrait and landscape support
- Accessibility: Screen reader support and high contrast
We welcome contributions to the Smart Calculator project! Here's how you can help:
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/yourusername/smart_calculator.git cd smart_calculator - Create a feature branch:
git checkout -b feature/your-feature-name
- Make your changes and ensure they follow the project structure
- Test your changes thoroughly
- Commit your changes:
git commit -m "Add: Brief description of your changes" - Push to your fork:
git push origin feature/your-feature-name
- Create a Pull Request on GitHub
- Follow the existing code style and architecture
- Write clear, concise commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
- Use Flutter SDK ^3.9.2
- Run
flutter pub getto install dependencies - Use
flutter analyzeto check code quality - Run tests with
flutter test
- Use GitHub Issues to report bugs or request features
- Provide detailed steps to reproduce bugs
- Include device/emulator information and Flutter version
If you have any questions or need help, please open an issue in the GitHub repository.
Made with โค๏ธ using Flutter









