useExplicitRender function
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);
}