UseCompute<T> constructor

UseCompute<T>(
  1. T compute(),
  2. List<ReactterState> dependencies
)

A ReactterHook that allows to compute a value using a predetermined compute function and a list of state dependencies, and which automatically updates the computed value if a dependency changes.

This example produces one simple UseCompute:

class AppController {
  final stateA = UseState(1);
  final stateB = UseState(7);
  late final computeState = UseCompute(
    () => (stateA + stateB).clamp(10, 15),
    [stateA, stateB],
  );

  AppController() {
    print(computeState.value); // 10;

    UseEffect((){
      print(computeState.value);
      // will print: 11, 15, 11
    }, [computeState]);

    stateA.value += 1; // numClamp doesn't change, its value is 10
    stateB.value += 2; // numClamp changes, its value is 11
    stateA.value += 4; // numClamp changes, its value is 15
    stateB.value += 8; // numClamp doesn't change, its value is 15
    stateA.value -= 8; // numClamp doesn't change, its value is 15
    stateB.value -= 4; // numClamp changes, its value is 11
  }
}

Implementation

UseCompute(
  this.compute,
  this.dependencies,
) {
  _valueComputed = compute();

  for (var dependency in dependencies) {
    Reactter.on(dependency, Lifecycle.didUpdate, _onDependencyChanged);
  }
}