useFuture<T> function

AsyncSnapshotFutureSignal<T> useFuture<T>(
  1. Future<T>? future, {
  2. T? initialData,
})

Creates a reactive signal that tracks the state of a Future.

This hook provides an AsyncSnapshot that updates automatically as the Future progresses through its lifecycle. The behavior matches FutureBuilder.

Parameters:

  • future: The Future to track, can be null
  • initialData: Optional initial data to use before the Future completes

Example:

final future = Future.delayed(Duration(seconds: 1), () => 42);
final snapshot = useFuture(future);

if (snapshot.connectionState == ConnectionState.waiting) {
  return CircularProgressIndicator();
} else if (snapshot.hasError) {
  return Text('Error: ${snapshot.error}');
} else {
  return Text('Data: ${snapshot.data}');
}

Implementation

AsyncSnapshotFutureSignal<T> useFuture<T>(Future<T>? future, {T? initialData}) {
  return useAutoDispose<_AsyncSnapshotFutureSignalImpl<T>>(() {
    final signal = _AsyncSnapshotFutureSignalImpl<T>(
      future,
      initialData: initialData,
    );
    return signal;
  });
}