flutter_hooks 0.20.3 icon indicating copy to clipboard operation
flutter_hooks: ^0.20.3 copied to clipboard

A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse.

0.20.3 - 2023-10-10 #

  • Added useExpansionTileController (thanks to @droidbg)
  • Added useMaterialStateController (thanks to @AdamHavlicek)

0.20.2 - 2023-10-02 #

  • Fixed key matching algorithm incorrectly not checking all keys if a 0 or a NaN is present (thanks to @AlexDochioiu)

0.20.1 - 2023-08-29 #

  • useListenableSelector now supports null listeners (thanks to @JWo1F)

0.20.0 - 2023-07-25 #

  • Breaking: keys comparison has changed under the following conditions:
    • Change from double.nan to double.nan preserves the state.
    • Change from 0.0 to -0.0 or vice versa does NOT preserve the state.
  • Added useOnStreamChange (thanks to @jezsung)

0.19.0 - 2023-07-10 #

  • Added useSearchController (thanks to @snapsl)
  • Keys on useCallback are now optional, to match useMemoized (thanks to @jezsung)
  • Update usePlatformBrightness to stop relying on deprecated code

0.18.6 #

  • Added korean translation (thanks to @sejun2)
  • Add useFocusScopeNode hook (thanks to @iamsahilsonawane)

0.18.5+1 #

Update links to the repository

0.18.5 #

  • Added useListenableSelector, similar to useListenable, for listening to a Listenable but rebuilding the widget only if a certain data has changed (thanks to @ronnieeeeee)
  • Added useAutomaticKeepAlive (thanks to @DevNico)
  • Added usePlatformBrightness and useOnPlatformBrightnessChange to interact with platform Brightness (thanks to @AhmedLSayed9)

0.18.4 #

Upgrade to Flutter 3.0.0

0.18.3 #

Added onKeyEvent to useFocusNode (thanks to @kdelorey)

0.18.2+1 #

Improved the documentation (thanks to @Renni771)

0.18.2 #

  • Allow null in useListenable

0.18.1 #

  • Added useTransformationController, to create a TransformationController (thanks to @shrouxm)
  • Added useAppLifecycleState and useOnAppLifecycleStateChange to interact with AppLifecycleState (thanks to @francipvb)

0.18.0 #

  • Breaking: useRef now receive an initial value as parameter. To migrate, you can change:

    ObjectRef<int> ref = useRef<int>();


    ObjectRef<int?> ref = useRef<int?>(null);
  • Updated useStream/useFuture to match the behavior of StreamBuilder/FutureBuilder regarding initial values.

  • Added a reverseDuration parameter to useAnimationController

0.17.0 #

  • useFuture/useStream's AsynsSnapshot now correctly expose the StackTrace when there is an error.
  • added useRef and useCallback, similar to the React equivalents.
  • initialData of useStream and useFuture is now optional.

0.16.0 #

Stable null-safety release

0.16.0-nullsafety.0 #

Migrated flutter_hooks to null-safety (special thanks to @DevNico for the help!)

0.15.0 #

  • Added usePageController to create a PageController

0.14.1 #

  • Increased the minimum version of the Flutter SDK required to match changes on useFocusNode

    The minimum required is now 1.20.0 (the stable channel is at 1.20.4)

0.14.0 #

  • added all FocusNode parameters to useFocusNode
  • Fixed a bug where on hot-reload, a HookWidget could potentially not rebuild
  • Allow hooks to integrate with the devtool using the Diagnosticable API, and implement it for all built-in hooks.

0.13.1 #

  • useIsMounted now returns a function instead of a callable class.

0.13.0 #

  • Added useIsMounted to determine whether a widget was destroyed or not (thanks to @davidmartos96)

0.12.0 #

  • Added useScrollController to create a ScrollController
  • added useTabController to create a TabController (thanks to @Albert221)

0.11.0 #

Breaking change:

  • Removed HookState.didBuild.
    If you still need it, use addPostFrameCallback or Future.microtask.

Non-breaking changes:

  • Fix a bug where the order in which hooks are disposed is incorrect.

  • It is now allowed to rebuild a HookWidget with more/less hooks than previously. Example:

    Widget build(context) {
      if (condition) {
        return Container();
      return Container();
  • Deprecated Hook.use in favor of a new short-hand use. Before:




0.10.0 #

Breaking change:

  • The order in which hooks are disposed has been reversed.



    Before, the useSomething was disposed before useSomethingElse. Now, useSomethingElse is disposed before the useSomething.

    The reason for this change is for cases like:

    // Creates an AnimationController
    final animationController = useAnimationController();
    // Immediately listen to the AnimationController

    Before, when the widget was disposed, this caused an exception as useListenable unsubscribed to the AnimationController after its dispose method was called.

Non-breaking changes:

  • Added a way for hooks to potentially abort a widget rebuild.
  • Added StatefulHookWidget, a StatefulWidget that can use hooks inside its build method.

0.9.0 #

  • Added a deactivate life-cycle to HookState

0.8.0+1 #

  • Fixed link to "Existing hooks" in README.md.

0.8.0: #

Added useFocusNode

0.7.0: #

  • Added useTextEditingController, thanks to simolus3!

0.6.1: #

  • Added useReassemble hook, thanks to @SahandAkbarzadeh

0.6.0: #

  • Make hooks compatible with newer flutter stable version 1.7.8-hotfix.2.

0.4.0: #

0.3.0: #

  • NEW: usePrevious, a hook that returns the previous argument is received.
  • NEW: it is now impossible to call inheritFromWidgetOfExactType inside initHook of hooks. This forces authors to handle value updates.
  • FIX: use List
pub points


verified publisher icondash-overflow.net

A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse.

Repository (GitHub)
View/report issues


API reference


Icon for licenses.MIT (LICENSE)




Packages that depend on flutter_hooks