chemistry 1.0.0 copy "chemistry: ^1.0.0" to clipboard
chemistry: ^1.0.0 copied to clipboard

State manager that separates pure state and derived state. It aims to be easy to use.

example/chemistry_example.dart

import 'dart:io';
import 'package:chemistry/chemistry.dart';

void main() async {
  var firstNumber = Atom<int>(defaultValue: 0, key: 'firstNumber');
  var secondNumber = Atom<int>(defaultValue: 0, key: 'secondNumber');
  var operator = Atom<String>(defaultValue: '+', key: 'operator');
  var result = Molecule(
      atoms: [firstNumber, secondNumber, operator],
      computer: (getAtom) {
        var firstNumber = getAtom<int>('firstNumber');
        var secondNumber = getAtom<int>('secondNumber');
        var operator = getAtom<String>('operator');

        if (firstNumber == null || secondNumber == null || operator == null) {
          return 'Error';
        }

        switch (operator.state) {
          case '+':
            return firstNumber.state + secondNumber.state;
          case '-':
            return firstNumber.state - secondNumber.state;
          case '*':
            return firstNumber.state * secondNumber.state;
          case '/':
            return firstNumber.state / secondNumber.state;
        }

        return 'Error';
      },
      key: 'sum');

  print('Enter an integer: ');

  var input = stdin.readLineSync() ?? '';
  var first = int.tryParse(input);

  if (first == null) {
    print('You must enter an integer...');
    return;
  }

  firstNumber.setState(first);

  print('Enter another integer: ');

  input = stdin.readLineSync() ?? '';
  var second = int.tryParse(input);

  if (second == null) {
    print('You must eneter an integer...');
    return;
  }

  secondNumber.setState(second);

  print('Enter an operator (+, -, *, /): ');

  input = stdin.readLineSync() ?? '';

  operator.setState(input);

  var res = await result.stateStream.first;
  print(res);
}
8
likes
150
points
62
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

State manager that separates pure state and derived state. It aims to be easy to use.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

More

Packages that depend on chemistry