useDisposableRef<T> function

T useDisposableRef<T>(
  1. T instance, {
  2. dynamic onMount(
    1. T
    )?,
  3. dynamic onDispose(
    1. T
    )?,
})

Allows to call any cleanup/dispose functions on Singletons saved inside of useRef hook.

final controller = useDisposableRef(TabController(), onMount: (tabController) => print('mounted'), onDispose: (tabController) => tabController.dispose());

Implementation

T useDisposableRef<T>(
  T instance, {
  Function(T)? onMount,
  Function(T)? onDispose,
}) {
  final instanceRef = useRef<T>(instance);

  useEffect(() {
    onMount?.call(instanceRef.value);
    return () => onDispose?.call(instanceRef.value);
  }, []);

  return instanceRef.value;
}