useExplicitRender function

ExplicitRenderResult useExplicitRender()

Custom hook that provides explicit rendering functionality. It returns a record with a dependency value and a rerender function.

This is useful when you need to force a widget to rebuild without changing any actual state, or when you need a dependency value that changes on demand.

Example:

class MyWidget extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final (:dep, :rerender) = useExplicitRender();

    // Use dep as a dependency for other hooks
    final expensiveValue = useMemoized(() {
      return computeExpensiveValue();
    }, [dep]);

    return ElevatedButton(
      onPressed: rerender,
      child: Text('Recompute: $expensiveValue'),
    );
  }
}

Implementation

ExplicitRenderResult useExplicitRender() {
  final state = useState(0);

  final rerender = useCallback(() {
    state.value++;
  }, [state]);

  return (dep: state.value, rerender: rerender);
}