Jolt Flutter Hooks

CI/CD codecov jolt_flutter_hooks License: MIT

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.

Quick Start

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,
      ),
    );
  }
}

API Reference

Listenable Hooks

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

Animation Hooks

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

Focus Hooks

Hook Description Returns
useFocusNode({...}) Creates a focus node FocusNode
useFocusScopeNode({...}) Creates a focus scope node FocusScopeNode

Lifecycle Hooks

Hook Description Returns
useAppLifecycleState([initialState]) Listens to app lifecycle state ReadonlySignal<AppLifecycleState?>

Scroll Hooks

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

Text Hooks

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

Controller Hooks

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

Async Hooks

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

Keep Alive Hook

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

License

This project is licensed under the MIT License - see the LICENSE file for details.

Libraries

jolt_flutter_hooks
Declarative hooks for Flutter widgets.