PackageTrack
Sign in Get early access

get_it

Simple direct Service Locator that allows to decouple the interface from a concrete implementation and to access the concrete implementation from everywhere in your App"

9.2.1 1.9M downloads/mo #262 most downloaded on pub.dev flutter-it/get_it

What this package is like to depend on

Last release 6 months ago

20 Feb 2026

Release timing varies

gaps range from 8 days to 8 months

Most releases are documented

notes for 52 of 73 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

89 releases · first in 2018

11 releases in the last 12 months

see the full history below

Release timeline

89 releases · May 2018 to Feb 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 89
  1. 9.2.1 20 Feb 2026
    Release notes
    • Added AI skill files in skills/ directory for AI coding assistants
    • Added AI-Assisted Development section to README
    Open source →
  2. 9.2.0 04 Dec 2025
    Release notes
    • allReady() now caches its Future and returns the same instance on repeated calls
    • Cache is invalidated when new async singletons are registered
    • Pending async singletons complete their ready completer when removed via unregister() or scope reset
    Open source →
    Release notes
    • allReady() now caches its Future and returns the same instance on repeated calls
      • Cache is automatically invalidated when new async singletons are registered
      • This enables watch_it to detect when async registrations change (e.g., after pushNewScope)
    • Fixed: pending async singletons now complete their ready completer when removed via unregister() or scope reset, allowing allReady() to complete properly
    Open source →
  3. 9.1.1 25 Nov 2025
    Release notes

    Remove generated test folder from example

    Open source →
    Release notes
    • Updated example project
    Open source →
  4. 9.1.0 20 Nov 2025
    Release notes
    • Remove gradlew patterns from .gitignore and example/.gitignore to include scripts
    • Add gradle-wrapper.jar to .pubignore to exclude binary from package
    • Keeps gradle scripts for building example, excludes ~60KB binary
    • Fixes pub publish warning about ignored files
    Open source →
    Release notes
    • Added DevTools extension for visualizing and inspecting GetIt registrations
      • View all registered objects with their type, scope, registration mode, and state
      • See instance details via toString() output for created instances
      • Manual refresh button to update the registration list
      • Requires debugEventsEnabled = true to be set on GetIt instance
      • See README for setup instructions
    Open source →
  5. 9.0.5 03 Nov 2025
    Release notes

    Update workflow to trigger on main branch

    Open source →
    Release notes
    • Use absolute GitHub URL for logo in README
    Open source →
  6. 9.0.4 03 Nov 2025
    Release notes

    Update workflow to trigger on main branch

    Open source →
    Release notes
    • Fixed screenshots description to match working 9.0.1 format
    Open source →
  7. 9.0.3 03 Nov 2025
    Release notes

    Update workflow to trigger on main branch

    Open source →
    Release notes
    • Fixed logo display on pub.dev by using relative path
    Open source →
  8. 9.0.2 03 Nov 2025
    Release notes

    Update workflow to trigger on main branch

    Open source →
    Release notes
    • Fixed button sizing in README for pub.dev display
    Open source →
  9. 9.0.1 03 Nov 2025
    Release notes

    Update workflow to trigger on main branch

    Open source →
  10. 9.0.0 03 Nov 2025
    Release notes

    Update workflow to trigger on main branch

    Open source →
    Release notes
    • BREAKING: Disposal order now always follows strict LIFO (Last-In-First-Out) based on registration order
      • Previously, disposal order was based on the order objects appeared in internal hash maps, which was unpredictable when mixing named and unnamed registrations
      • Now all disposals are sorted by registrationNumber (a sequential counter assigned during registration) ensuring true LIFO order
      • The strictDisposalOrder parameter has been removed from reset(), resetScope(), popScope(), popScopesTill(), and dropScope() methods
      • Performance impact is minimal: ~8% overhead for 10,000 registrations (approximately 2-3ms), negligible for typical applications
      • This change ensures correctness and predictability in dependency cleanup, which is more important than the minor performance cost
      • Impact on existing apps: If your app's behavior relies on the previous imperfect reverse disposal order, there is likely a design issue in your dependency structure that should be addressed
    • Fixed bug in registerCachedFactoryParamAsync where calling getAsync would fail with null error because it was checking the wrong function parameter (sync creationFunctionParam instead of asyncCreationFunctionParam)
    Open source →
  11. 8.3.0 02 Nov 2025
    Release notes
    • Reduce from 704 to 192 lines following README_TEMPLATE.md
    • Add prominent docs link to flutter-it.dev
    • Emphasize construction set philosophy
    • Remove Flutter Community banner (preparing for own logo)
    • Update blog post URLs to new blog.burkharts.net domain
    • Add startup orchestration article link
    • Streamline Quick Start with simple 3-step example
    • Link detailed content to documentation site
    • Update footer with flutter_it slogan
    Open source →
  12. 8.2.0 02 Aug 2025

    Nothing published for this version

  13. 8.1.0 30 Jul 2025

    Nothing published for this version

  14. 8.0.3 13 Dec 2024

    Nothing published for this version

  15. 8.0.2 30 Oct 2024

    Nothing published for this version

  16. 8.0.1 21 Oct 2024

    Nothing published for this version

  17. 8.0.0 20 Sep 2024

    Nothing published for this version

  18. 8.0.0-pre-7 12 Aug 2024 pre-release
    Release notes
    • adding cachedFatories and better scope protection against race conditions
    Open source →
  19. 8.0.0-pre-6 11 Aug 2024 pre-release
    Release notes
    • testing weak references in lazySingeltons
    Open source →
  20. 8.0.0-pre-5 25 Jun 2024 pre-release
    Release notes
    • adding changeTypeInstanceName
    Open source →
  21. 8.0.0-pre-4 03 Jun 2024 pre-release
    Release notes
    • fixing bug in unregister that happened if you tried to unregister a named registration by providing an instance instead of the type and the instance name
    Open source →
  22. 8.0.0-pre-3 31 May 2024 pre-release
    Release notes
    • releaseInstance will now throw if the instance isn't registered
    Open source →
  23. 8.0.0-pre-2 29 May 2024 pre-release
    Release notes
    • fixing negative reference count
    Open source →
  24. 8.0.0-pre-1 26 May 2024 pre-release
    Release notes
    • getAll() and getAllAsync() now have a fromAllScopes parameter.
    • adding safeguards according to https://github.com/fluttercommunity/get_it/issues/364 to make it impossible to call push/popScope while the init() function of another pushScope is running.
    • fixed an unsafe type check when using a runtime type to access an object in get_it.
    Open source →
  25. 7.7.0 15 Apr 2024
    Release notes
    • thanks to the PR by @kasefuchs https://github.com/fluttercommunity/get_it/pull/361 getAll is now available in an async version too.
    Open source →
  26. 7.6.9 11 Apr 2024
    Release notes
    • fig for bug that was introduced in 7.6.8 https://github.com/fluttercommunity/get_it/issues/358
    Open source →
  27. 7.6.8 03 Apr 2024
    Release notes
    • merged PR by @venkata-reddy-dev https://github.com/fluttercommunity/get_it/pull/356 adding new skipDoubleRegistration flag for testing
    Open source →
  28. 7.6.7 18 Jan 2024
    Release notes
    • merged PR by @subzero911 https://github.com/fluttercommunity/get_it/pull/330
    Open source →
  29. 7.6.6 06 Jan 2024
    Release notes
    • Thanks to PR by @bvoq getIt.reset, getIt.popScope, getIt.dropScope now dispose registered objects in the reverse order in which they were registered.
    Open source →
  30. 7.6.4 04 Sep 2023
    Release notes
    • fixed the throwing of a StateError that was previously thrown as String
    Open source →
  31. 7.6.3 04 Sep 2023
    Release notes
    • push new version because pub didn't list this one
    Open source →
  32. 7.6.2 31 Aug 2023
    Release notes
    • fix linter error
    Open source →
  33. 7.6.1 31 Aug 2023
    Release notes
    • added isFinal scope parameter which fixes https://github.com/fluttercommunity/get_it/issues/326
    • version bump of dependencies and updates readme
    Open source →
  34. 7.6.1+1 31 Aug 2023

    Nothing published for this version

  35. 7.6.0 09 May 2023
    Release notes
    • merged PR by lacopiroty https://github.com/fluttercommunity/get_it/pull/297 which now allows to access objects inside GetIt by runtime type too like
        getIt.registerSingleton(TestClass());
    
        final instance1 = getIt.get(type: TestClass);
    
        expect(instance1 is TestClass, true);
    
    • fix for https://github.com/fluttercommunity/get_it/issues/299
    • fix for https://github.com/fluttercommunity/get_it/issues/300
    Open source →
  36. 7.5.0 07 May 2023
    Release notes
    • new function dropScope(scopeName) which allows to remove and dispose any named scope even if it's not the top one. Great PR by @olexale https://github.com/fluttercommunity/get_it/pull/292 which fixes sort of race conditions if you create scopes just for the life time of a widget.
    Open source →
  37. 7.4.1 05 May 2023

    Nothing published for this version

  38. 7.4.0 04 May 2023

    Nothing published for this version

  39. 7.3.0 24 Apr 2023

    Nothing published for this version

  40. 7.2.0 13 Jul 2021

    Nothing published for this version

  41. 7.1.4 15 Jun 2021

    Nothing published for this version

  42. 7.1.3 07 May 2021
    Release notes
    • Fix for https://github.com/fluttercommunity/get_it/issues/186
    Open source →
  43. 7.1.2 06 May 2021
    Release notes
    • Thanks to the clever PR https://github.com/fluttercommunity/get_it/pull/185 by @kmartins unregister and resetLazySingleton now only have to be awaited if you use an async disposal function.
    Open source →
  44. 7.1.1 05 May 2021
    Release notes
    • pushNewScope() now got an optional init parameter where you can pass a function that registers new objects inside the newly pushed Scope. Doing the registration in this function ensures that the onScopeChanged call-back is called after the objects are registered.
    Open source →
  45. 7.1.0 05 May 2021
    Release notes
    • The new Disposable interface had a typo that now got corrected. You could call this a breaking change but as the last version change is just three days old I guess not many people will be affected by this correction.

    Getting notified when a scope change happens

    When using scopes with objects that shadow other objects its important to give the UI a chance to rebuild and acquire references to the now active objects. For this you can register an call-back function in GetIt The getit_mixin has a matching rebuiltOnScopeChange method.

      /// Optional call-back that will get call whenever a change in the current scope happens
      /// This can be very helpful to update the UI in such a case to make sure it uses
      /// the correct Objects after a scope change
      void Function(bool pushed)? onScopeChanged;
    
    Open source →
  46. 7.0.0 02 May 2021
    Release notes

    This is a breaking change because there were some inconsistencies in the handling of the disposal functions that you can pass when registering an Object, pop a Scope or use unregister() resetLazySingleton(). Some of accepted a FutureOr method type, others just a void which meant you couldn't use async functions consistently. With this release you can use async functions in all disposal functions which unfortunately also required to change the signatures of the following functions:

      Future<void> reset({bool dispose = true});
    
      Future<void> resetScope({bool dispose = true});
    
      Future<void> popScope();
    
      Future<bool> popScopesTill(String name);
    
      FutureOr resetLazySingleton<T extends Object>({
        Object? instance,
        String? instanceName,
        FutureOr Function(T)? disposingFunction,
      });
    
      FutureOr unregister<T extends Object>({
        Object? instance,
        String? instanceName,
        FutureOr Function(T)? disposingFunction,
      });
    

    Basically all functions that can possibly call a disposal functions should be awaited.

    Implementing the Disposable interface

    Instead of passing a disposing function on registration or when pushing a Scope from V7.0 on your objects onDispose() method will be called if the object that you register implements the Disposable´interface:

    abstract class Disposable {
      FutureOr onDispose();
    }
    

    Getting notified about the shadowing state of an object

    In some cases it might be helpful to know if an Object gets shadowed by another one e.g. if it has some Stream subscriptions that it want to cancel before the shadowing object creates a new subscription. Also the other way round so that a shadowed Object gets notified when it's "active" again meaning when a shadowing object is removed.

    For this a class had to implement the ShadowChangeHandlers interface:

    abstract class ShadowChangeHandlers {
      void onGetShadowed(Object shadowing);
      void onLeaveShadow(Object shadowing);
    }
    

    When the Object is shadowed its onGetShadowed() method is called with the object that is shadowing it. When this object is removed from GetIt onLeaveShadow() will be called.

    • Thanks to this PR https://github.com/fluttercommunity/get_it/pull/181 by @n3wtron you can now also make objects depend on other objects not only by type but also by type and name if you used a named registration
    Open source →
  47. 6.1.1 13 Apr 2021
    Release notes
    • small fix in getAsync with parameters
    Open source →
  48. 6.1.0 12 Apr 2021
    Release notes
    • Exceptions that occur during an async initialisation are now forwarded to the future that allReady() returns instead to get swallowed https://github.com/fluttercommunity/get_it/issues/148
    • Added a property currentScopeName to query the name of the currently active scope https://github.com/fluttercommunity/get_it/issues/153
    • popScope will know throw an Exception instead just an assert if you are already on the baseScope and you try to pop it.
    Open source →
  49. 6.0.0 15 Feb 2021
    Release notes
    • Official null safety release
    Open source →
  50. 6.0.0-nullsafety.2 10 Jan 2021 pre-release

    Nothing published for this version

  51. 6.0.0-nullsafety.1 30 Nov 2020 pre-release

    Nothing published for this version

  52. 5.0.6 22 Jan 2021

    Nothing published for this version

  53. 5.0.5 22 Jan 2021

    Nothing published for this version

  54. 5.0.4 10 Jan 2021

    Nothing published for this version

  55. 5.0.3 09 Dec 2020

    Nothing published for this version

  56. 5.0.2 08 Dec 2020
    Release notes
    • fixed https://github.com/fluttercommunity/get_it/issues/138 when calling unRegister the dispose function that can be passed when registering wasn't called.
    Open source →
  57. 5.0.1 23 Sep 2020
    Release notes
    • fixed formatting in readme
    Open source →
  58. 5.0.0 15 Sep 2020
    Release notes
    • New scope support for registration
    • optional dispose functions for registered objects
    • Breaking change: reset() now is async and returns a Future because it will call the new optional disposal functions that can be async
    • Breaking change: If you use names to register your objects you now have to provide a type too or at least make sure the compiler can infer the type. With this change it is now possible to use the same name for different types.
    Open source →
  59. 5.0.0-mixin-version 17 Sep 2020 pre-release
    Release notes
    • experimental
    Open source →
  60. 5.0.0-alpha2 11 Sep 2020 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive