simplest_calculator 0.0.1+1 copy "simplest_calculator: ^0.0.1+1" to clipboard
simplest_calculator: ^0.0.1+1 copied to clipboard

A simple calculator package that supports basic arithmetic operations.

๐Ÿ“Ÿ Simplest Calculator #

A lightweight Flutter package that provides basic arithmetic operations:
โœ… Addition (+)
โœ… Subtraction (-)
โœ… Multiplication (*)
โœ… Division (/) (with division-by-zero handling)


๐Ÿš€ Installation #

To use this package, add the following to your pubspec.yaml file:

dependencies:
  simplest_calculator: ^0.0.1

Then, run:

flutter pub get

Alternatively, if you want to use the latest version from GitHub:

dependencies:
  simplest_calculator:
    git: https://github.com/roscoekerby/simplest_calculator.git

๐Ÿ›  Usage #

Import the package:

import 'package:simplest_calculator/simplest_calculator.dart';

void main() {
  final calculator = SimplestCalculator();

  print(calculator.add(10, 5)); // 15
  print(calculator.subtract(10, 5)); // 5
  print(calculator.multiply(10, 5)); // 50
  print(calculator.divide(10, 5)); // 2.0

  // Handling division by zero
  try {
    print(calculator.divide(10, 0));
  } catch (e) {
    print(e); // Output: Cannot divide by zero
  }
}

๐Ÿ“– API Reference #

Method Description Example Usage
add(a, b) Adds two numbers calculator.add(2, 3) โ†’ 5
subtract(a, b) Subtracts second number from the first calculator.subtract(5, 3) โ†’ 2
multiply(a, b) Multiplies two numbers calculator.multiply(4, 5) โ†’ 20
divide(a, b) Divides first number by the second (checks for division by zero) calculator.divide(10, 2) โ†’ 5.0

๐Ÿ“‚ Example Application #

An interactive example app is included. To run it:

cd example
flutter run

Example UI Implementation:

import 'package:flutter/material.dart';
import 'package:simplest_calculator/simplest_calculator.dart';

void main() {
  runApp(CalculatorApp());
}

class CalculatorApp extends StatelessWidget {
  final SimplestCalculator calculator = SimplestCalculator();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Simplest Calculator Example')),
        body: CalculatorScreen(calculator),
      ),
    );
  }
}

class CalculatorScreen extends StatefulWidget {
  final SimplestCalculator calculator;

  const CalculatorScreen(this.calculator, {Key? key}) : super(key: key);

  @override
  _CalculatorScreenState createState() => _CalculatorScreenState();
}

class _CalculatorScreenState extends State<CalculatorScreen> {
  double num1 = 0, num2 = 0;
  double? result;

  void calculate(String operation) {
    setState(() {
      switch (operation) {
        case '+':
          result = widget.calculator.add(num1, num2);
          break;
        case '-':
          result = widget.calculator.subtract(num1, num2);
          break;
        case '*':
          result = widget.calculator.multiply(num1, num2);
          break;
        case '/':
          try {
            result = widget.calculator.divide(num1, num2);
          } catch (e) {
            result = double.nan;
          }
          break;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          TextField(
            decoration: const InputDecoration(labelText: "Enter first number"),
            keyboardType: TextInputType.number,
            onChanged: (value) => num1 = double.tryParse(value) ?? 0,
          ),
          TextField(
            decoration: const InputDecoration(labelText: "Enter second number"),
            keyboardType: TextInputType.number,
            onChanged: (value) => num2 = double.tryParse(value) ?? 0,
          ),
          const SizedBox(height: 20),
          Wrap(
            spacing: 10,
            children: ['+', '-', '*', '/'].map((op) {
              return ElevatedButton(
                onPressed: () => calculate(op),
                child: Text(op),
              );
            }).toList(),
          ),
          const SizedBox(height: 20),
          Text(
            "Result: ${result ?? ''}",
            style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
          ),
        ],
      ),
    );
  }
}

๐Ÿงช Running Tests #

This package includes unit tests to verify functionality. To run tests:

flutter test

Test file (test/simplest_calculator_test.dart):

import 'package:flutter_test/flutter_test.dart';
import 'package:simplest_calculator/simplest_calculator.dart';

void main() {
  final calculator = SimplestCalculator();

  test('Addition works correctly', () {
    expect(calculator.add(2, 3), 5);
    expect(calculator.add(-2, -3), -5);
  });

  test('Subtraction works correctly', () {
    expect(calculator.subtract(5, 3), 2);
    expect(calculator.subtract(3, 5), -2);
  });

  test('Multiplication works correctly', () {
    expect(calculator.multiply(2, 3), 6);
    expect(calculator.multiply(-2, 3), -6);
  });

  test('Division works correctly', () {
    expect(calculator.divide(6, 3), 2);
    expect(calculator.divide(-6, 3), -2);
  });

  test('Division by zero throws an error', () {
    expect(() => calculator.divide(6, 0), throwsArgumentError);
  });
}

๐Ÿ›  Contributing #

We welcome contributions! To contribute:

  1. Fork the repository:
    Click on the Fork button at the top-right corner of the repo.

  2. Clone the repository:

    git clone https://github.com/roscoekerby/simplest_calculator.git
    cd simplest_calculator
    
  3. Create a new branch:

    git checkout -b feature-yourfeature
    
  4. Make your changes and commit:

    git add .
    git commit -m "Added a new feature"
    
  5. Push and open a Pull Request:

    git push origin feature-yourfeature
    

๐Ÿ“œ License #

This package is licensed under the MIT License. See the LICENSE file for details.


๐Ÿ“ž Contact #


๐Ÿ“Œ Final Notes #

This package is designed to be minimalistic yet functional. Future updates may include:
โœ… Scientific calculator operations (exponents, square roots, logs)
โœ… Support for fractions & decimals
โœ… Graphing functionalities


๐ŸŽ‰ Enjoy Using simplest_calculator! ๐Ÿš€ #

1
likes
160
points
0
downloads

Publisher

verified publisherroscodetech.com

Weekly Downloads

A simple calculator package that supports basic arithmetic operations.

Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on simplest_calculator