thenWithContext<Q> method

Lens<S, Q> thenWithContext<Q>(
  1. Lens<T, Q> lensMaker(
    1. S context
    )
)

Chain two lenses together.

Example:

 final bar = Bar(foos: [Foo(number: 101, name: "One"), Foo(number: 102, name: "Two")], driver: "One");

 final driversNumber =
     Bar$.foos.thenWithContext((bar) => List$.where<Foo>((foo) => foo.name == bar.driver).then(Foo$.number));
 print(driversNumber.of(bar).value);
 // 101

Implementation

Lens<S, Q> thenWithContext<Q>(Lens<T, Q> Function(S context) lensMaker) => Lens<S, Q>(
      (s) => lensMaker(s).get(get(s)),
      (s, q) => update(s, lensMaker(s).update(get(s), q)),
    );