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
55
downloads

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

Documentation

API reference

License

BSD-3-Clause (license)

More

Packages that depend on chemistry