SubEffect constructor

SubEffect({
  1. required VoidCallback? effect(),
  2. required Widget child,
  3. SubValueKeys? keys,
})

Useful for side-effects and optionally canceling them.

SubEffect calls its effect synchronously on every build, unless keys is specified. In which case the effect is called again only if any value inside keys as changed.

It takes an effect callback and calls it synchronously. That effect may optionally return a function, which will be called when the effect is called again or if the widget is disposed.

By default effect is called on every build call, unless keys is specified. In which case, effect is called once on the first build and whenever something within keys changes.

Implementation

SubEffect({
  required VoidCallback? Function() effect,
  required Widget child,
  SubValueKeys? keys,
}) : super(
        create: effect,
        builder: (context, value) => child,
        dispose: (value) => value?.call(),
        // by using a plain object as a key as default,
        // we ensure that the effect is called on every build.
        keys: keys ?? [Object()],
      );