
Declarative hooks for Flutter widgets built on top of the Jolt Flutter setup system. These hooks help manage common Flutter resources such as controllers, focus nodes, and lifecycle states with automatic cleanup.
import 'package:flutter/material.dart';
import 'package:jolt_flutter/setup.dart';
import 'package:jolt_flutter_hooks/jolt_flutter_hooks.dart';
class MyWidget extends SetupWidget {
@override
Widget build(BuildContext context) {
final textController = useTextEditingController('Hello');
final focusNode = useFocusNode();
return Scaffold(
body: TextField(
controller: textController,
focusNode: focusNode,
),
);
}
}
| Hook |
Description |
Returns |
useValueNotifier<T>(initialValue) |
Creates a value notifier |
ValueNotifier<T> |
useValueListenable<T>(...) |
Listens to a value notifier and triggers rebuilds |
void |
useListenable<T>(...) |
Listens to any listenable and triggers rebuilds |
void |
useListenableSync<T, C>(...) |
Bidirectional sync between Signal and Listenable |
void |
useChangeNotifier<T>(creator) |
Generic ChangeNotifier hook |
T extends ChangeNotifier |
| Hook |
Description |
Returns |
useSingleTickerProvider() |
Creates a single ticker provider |
TickerProvider |
useTickerProvider() |
Creates a ticker provider that supports multiple tickers |
TickerProvider |
useAnimationController({...}) |
Creates an animation controller |
AnimationController |
| Hook |
Description |
Returns |
useFocusNode({...}) |
Creates a focus node |
FocusNode |
useFocusScopeNode({...}) |
Creates a focus scope node |
FocusScopeNode |
| Hook |
Description |
Returns |
useAppLifecycleState([initialState]) |
Listens to app lifecycle state |
ReadonlySignal<AppLifecycleState?> |
| Hook |
Description |
Returns |
useScrollController({...}) |
Creates a scroll controller |
ScrollController |
useTrackingScrollController({...}) |
Creates a tracking scroll controller |
TrackingScrollController |
useTabController({...}) |
Creates a tab controller |
TabController |
usePageController({...}) |
Creates a page controller |
PageController |
useFixedExtentScrollController({...}) |
Creates a fixed extent scroll controller |
FixedExtentScrollController |
useDraggableScrollableController() |
Creates a draggable scrollable controller |
DraggableScrollableController |
useCarouselController({...}) |
Creates a carousel controller |
CarouselController |
| Hook |
Description |
Returns |
useTextEditingController([text]) |
Creates a text editing controller |
TextEditingController |
useTextEditingController.fromValue([value]) |
Creates a text editing controller from value |
TextEditingController |
useRestorableTextEditingController([value]) |
Creates a restorable text editing controller |
RestorableTextEditingController |
useSearchController() |
Creates a search controller |
SearchController |
useUndoHistoryController({...}) |
Creates an undo history controller |
UndoHistoryController |
| Hook |
Description |
Returns |
useTransformationController([value]) |
Creates a transformation controller |
TransformationController |
useWidgetStatesController([value]) |
Creates a widget states controller |
WidgetStatesController |
useExpansibleController() |
Creates an expansible controller |
ExpansibleController |
useTreeSliverController() |
Creates a tree sliver controller |
TreeSliverController |
useOverlayPortalController({...}) |
Creates an overlay portal controller |
OverlayPortalController |
useSnapshotController({...}) |
Creates a snapshot controller |
SnapshotController |
useCupertinoTabController({...}) |
Creates a Cupertino tab controller |
CupertinoTabController |
useContextMenuController({...}) |
Creates a context menu controller |
ContextMenuController |
useMenuController() |
Creates a menu controller |
MenuController |
useMagnifierController({...}) |
Creates a magnifier controller |
MagnifierController |
| Hook |
Description |
Returns |
useFuture<T>(future, {...}) |
Creates a reactive future signal |
AsyncSnapshotFutureSignal<T> |
useStream<T>(stream, {...}) |
Creates a reactive stream signal |
AsyncSnapshotStreamSignal<T> |
useStreamController<T>(...) |
Creates a stream controller |
StreamController<T> |
useStreamSubscription<T>(...) |
Manages a stream subscription |
void |
| Hook |
Description |
Returns |
useAutomaticKeepAlive(wantKeepAlive) |
Manages automatic keep alive with reactive signal |
void |
Jolt Flutter Hooks is part of the Jolt ecosystem. Explore these related packages:
| Package |
Description |
| jolt |
Core library providing Signals, Computed, Effects, and reactive collections |
| jolt_flutter |
Flutter widgets: JoltBuilder, JoltSelector, JoltProvider, and SetupWidget |
| jolt_hooks |
Hooks API: useSignal, useComputed, useJoltEffect, useJoltWidget |
| jolt_surge |
Signal-powered Cubit pattern: Surge, SurgeProvider, SurgeConsumer |
This project is licensed under the MIT License - see the LICENSE file for details.