Viewing version 9.3.0. Open the latest package page.
get_it
9.3.0Simple direct Service Locator that allows to decouple the interface from a concrete implementation and to access the concrete implementation from everywhere in your App"
Readme
get_it
📚 Complete documentation available at flutter-it.dev Check out the comprehensive docs with detailed guides, examples, and best practices!
A blazing-fast service locator for Dart and Flutter that makes dependency management simple.
As your app grows, you need a way to access services, models, and business logic from anywhere without tightly coupling your code to widget trees. get_it is a simple, type-safe service locator that gives you O(1) access to your objects from anywhere in your app—no BuildContext required, no code generation, no magic.
Think of it as a smart container that holds your app's important objects. Register them once at startup, then access them from anywhere. Simple, fast, and testable.
flutter_it is a construction set — get_it works perfectly standalone or combine it with other packages like watch_it (state management), command_it (commands), or listen_it (reactive operators). Use what you need, when you need it.
Why get_it?
- ⚡ Blazing Fast — O(1) lookups using Dart's native Maps. No reflection, no slow searches.
- 🎯 Type Safe — Full compile-time type checking with generics. Errors caught before runtime.
- 🧪 Test Friendly — Easily swap real implementations for mocks. Reset and reconfigure between tests.
- 🌳 No BuildContext — Access your objects from anywhere—business logic, utilities, even pure Dart packages.
- 📦 Framework Agnostic — Works in Flutter, pure Dart, server-side, CLI apps. No Flutter dependencies required.
- 🔧 Zero Boilerplate — No code generation, no build_runner, no annotations. Just register and use.
Learn more about the philosophy behind get_it →
💡 New to service locators? Read Martin Fowler's classic article on Inversion of Control Containers and the Dependency Injection pattern or check out this detailed blog post on using service locators with Flutter.
Quick Start
Installation
Add to your pubspec.yaml:
dependencies:
get_it: ^8.0.2
Basic Usage
import 'package:get_it/get_it.dart';
// Create a global instance (or use GetIt.instance)
final getIt = GetIt.instance;
// 1. Define your services
class ApiClient {
Future<void> fetchData() async { /* ... */ }
}
class UserRepository {
final ApiClient apiClient;
UserRepository(this.apiClient);
}
// 2. Register them at app startup
void configureDependencies() {
getIt.registerSingleton<ApiClient>(ApiClient());
getIt.registerLazySingleton<UserRepository>(
() => UserRepository(getIt<ApiClient>())
);
}
// 3. Access from anywhere in your app
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () {
// No BuildContext passing needed!
getIt<UserRepository>().apiClient.fetchData();
},
child: Text('Fetch Data'),
);
}
}
That's it! Three simple steps: define, register, access.
Key Features
Registration Types
Choose the lifetime that fits your needs:
-
Singleton — Create once, share everywhere. Perfect for services that maintain state. Read more →
-
LazySingleton — Create on first access. Delays initialization until needed. Read more →
-
Factory — New instance every time. Great for stateless services or objects with short lifetimes. Read more →
Avoid untyped tear-offs as factories. Registering
getIt.call(or an untypedgetIt.gettear-off) asregisterLazySingleton<Iface>(...)re-entersget<Iface>()and used to overflow the stack. For lazy singletons (sync and async) and cached factories GetIt now detects this circular self-resolution and throws a descriptiveStateError. PlainregisterFactoryfactories are not guarded, since a factory that recursively resolves its own type (e.g. to build a tree) is a legitimate pattern. Prefer() => getIt<Impl>()or a named function that keeps the concrete type argument.
Advanced Features
-
Scopes — Create hierarchical registration scopes for different app states (login/logout, sessions, feature flags). Read more →
-
Async Objects — Register objects that need async initialization with dependency ordering. Read more →
-
Startup Orchestration — Easily orchestrate initialization of asynchronous objects during startup. Read more →
-
Named Instances — Register multiple implementations of the same type with different names. Read more →
-
Multiple Registrations — Register multiple implementations and retrieve them all as a collection. Read more →
-
Unregistering — Remove registrations with
unregister(), optionally disposing the instance. By defaultunregister()throws if nothing matching is registered (usually a sign that you dispose once too often); setgetIt.skipUnregisterIfNotRegistered = trueto silently ignore a missing registration instead. Read more →
Testing Support
get_it makes testing a breeze:
- Easy Mocking — Replace real implementations with mocks using
allowReassignmentorreset() - Test Isolation —
reset()clears all registrations between tests - Constructor Injection — Use optional constructor parameters to inject mocks in tests
// In tests
setUp(() {
getIt.registerSingleton<ApiClient>(MockApiClient());
});
tearDown(() async {
await getIt.reset();
});
DevTools Extension
get_it includes a DevTools extension that lets you visualize and inspect all registered objects in your running app:
- View all registrations — See type, instance name, scope, registration mode, async status, ready state, and creation status
- Instance details — View the
toString()output of created instances to inspect their state - Manual refresh — Update the registration list anytime with the refresh button
Setup
-
Enable debug events in your app (typically in
main.dart). This enables the extension to receive automatic updates when registrations change:void main() { GetIt.instance.debugEventsEnabled = true; // ... rest of your setup runApp(MyApp()); } -
Run your app in debug mode and open DevTools
-
Open DevTools in the browser — The extension currently only works in the browser-based DevTools, not in the IDE-embedded version.
-
Enable the extension — Click the Extensions button (puzzle piece icon) in the top right corner of DevTools and enable the
get_itextension. -
Find the "get_it" tab — The extension will appear as a new tab in DevTools
For more information on using DevTools extensions, see the official Flutter DevTools documentation.
💡 Tip: Override
toString()in your registered classes to see meaningful details in the DevTools extension. By default, Dart'stoString()only shows the type name and instance ID.
class UserRepository {
final String userId;
@override
String toString() => 'UserRepository(userId: $userId)';
}
Flutter Widget Previews
get_it works seamlessly with Flutter's widget previewer. Since previews run in isolation, you need to initialize get_it within the preview itself:
@Preview()
Widget myPreview() {
if (!getIt.isRegistered<MyService>()) {
getIt.registerSingleton<MyService>(MockService());
}
return const MyWidget();
}
Or use a reusable wrapper for automatic cleanup:
@Preview(name: 'My Widget', wrapper: myWrapper)
Widget myPreview() => const MyWidget();
Ecosystem Integration
get_it works independently — use it standalone for dependency injection in any Dart or Flutter project.
Want more? Combine with other packages from the flutter_it ecosystem:
-
Optional: watch_it — Reactive state management built on get_it. Watch registered objects and rebuild widgets automatically.
-
Optional: command_it — Command pattern with loading/error states. Integrates seamlessly with get_it services.
-
Optional: listen_it — ValueListenable operators (map, where, debounce). Use with objects registered in get_it.
Remember: flutter_it is a construction set. Each package works independently. Pick what you need, combine as you grow.
AI-Assisted Development
This package ships an Agent Skill for AI coding assistants
(Claude Code, Cursor, GitHub Copilot, Codex, Gemini CLI and others) in skills/get-it-expert/.
It teaches them the critical rules, common patterns and anti-patterns of get_it.
Install it into your project with the official Dart skills tool:
dart run skills@ get
For the ecosystem-wide skills (architecture guidance, feed/data-source patterns, overview) and the skills of the other flutter_it packages run:
dart run skills@ add flutter-it/flutter_it
Learn More
Documentation
- Getting Started — Installation, basic concepts, when to use what
- Object Registration — All registration types, parameters, disposing
- Scopes — Hierarchical scopes, shadowing, scope management
- Async Objects — Async initialization, dependencies,
allReady() - Testing — Unit tests, integration tests, mocking strategies
- Advanced Topics — Named instances, multiple GetIt instances, runtime types
- FAQ — Common questions and troubleshooting
Community & Support
- Discord — Get help, share ideas, connect with other developers
- GitHub Issues — Report bugs, request features
- GitHub Discussions — Ask questions, share patterns
Articles & Resources
- One to find them all: How to use Service Locators with Flutter — Comprehensive blog post on using get_it
- Let's get this party started: Startup orchestration with GetIt — Deep dive into async initialization and startup orchestration
- Martin Fowler on Service Locator Pattern — Classic article on IoC and DI patterns
Contributing
Contributions are welcome! Please read the contributing guidelines before submitting PRs.
License
MIT License - see LICENSE file for details.
Acknowledgements
Many thanks to Brian Egan and Simon Lightfoot for the insightful discussions on the API design.
Part of the flutter_it ecosystem — Build reactive Flutter apps the easy way. No codegen, no boilerplate, just code.
Changelog
[9.3.0] - 2026-09-19
[9.3.0] - 2026-09-19
- Detect circular self-resolution of lazy singletons (sync and async) and cached factories and throw a descriptive
StateErrorinstead of aStackOverflowError. Thanks to @muhammadkamel (#423). pubspec.lockis no longer committed, following the Dart guidelines for library packages.- New
acceptsParamsgetter onObjectRegistrationthat tells whether the registered factory takes parameters. Passingparam1/param2to a registration that doesn't accept parameters now fails an assert in debug mode instead of silently ignoring them. - New global flag
skipUnregisterIfNotRegistered: when set totrue,unregistersilently ignores a missing registration instead of throwing (default staysfalse). Thanks to @Gorniaky (#420) and @AzazelSensei (#424) for raising this. - DevTools extension: filter and sort for the registrations table. Thanks to @yang-lile (#421).
- DevTools extension rebuilt with Flutter 3.47.1.
- Fixed analyzer warnings/infos reported by pub.dev and updated dev dependencies.
[9.2.1] - 2026-02-19
- Added AI skill files in
skills/directory for AI coding assistants - Added AI-Assisted Development section to README
[9.2.0] - 2025-12-03
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, allowingallReady()to complete properly
[9.1.1] - 2025-11-25
- Updated example project
[9.1.0] - 2025-11-20
- 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 = trueto be set on GetIt instance - See README for setup instructions
[9.0.5] - 2025-01-12
- Use absolute GitHub URL for logo in README
[9.0.4] - 2025-01-12
- Fixed screenshots description to match working 9.0.1 format
[9.0.3] - 2025-01-12
- Fixed logo display on pub.dev by using relative path
[9.0.2] - 2025-01-12
- Fixed button sizing in README for pub.dev display
[9.0.1]
- Fixed linter error (missing trailing comma in test file)
[9.0.0] - BREAKING CHANGE
- 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
strictDisposalOrderparameter has been removed fromreset(),resetScope(),popScope(),popScopesTill(), anddropScope()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
registerCachedFactoryParamAsyncwhere callinggetAsyncwould fail with null error because it was checking the wrong function parameter (synccreationFunctionParaminstead ofasyncCreationFunctionParam)
[8.3.0]
- Added
findAll()method for finding all registered instances by type with flexible matching options (subtypes, interfaces, scope filtering) - Added
resetLazySingletons()method to reset multiple lazy singletons at once with optional scope parameters - Added
onCreatedcallback parameter toregisterLazySingleton,registerLazySingletonAsync, andregisterSingletonAsyncfor lifecycle hooks - Improved parameter validation error messages in debug mode - now provides clear, actionable feedback when wrong parameter types are passed to factories
- Fixed bug in cached factories where parameter validation could throw unhelpful errors
[8.2.0]
Thanks to PR by @Hu-Wentao we now expose part of the internal state of get_it so tool authors have more options. While doing so internal renaming has happened, so where previously where the term "ServiceFactory" was uses we not use consistently ObjectRegistration and instead of variables with factory in the name we use registration this has not impact on the public API so it is not a breaking change.
[8.1.0]
- adding documentation https://github.com/flutter-it/get_it/issues/411
- registerCachedFactoryAsync usded FactoryFunc instead of FactoryFuncAsync https://github.com/flutter-it/get_it/issues/410
- adding
getMaybewhich will returnnullinstead of throwing an exception in case a type is not registered dependsOnofregisterSingletonWithDependenciesis now required. Although this could be seen as a breaking change, if you didn't passdependsOnyour code wouldn't have worked before so I won't define this as breaking change
[8.0.3]
- fixing linter warning thanks to @PatrickChrestin
[8.0.2]
- Fixes by @kuhnroyal and @ArtAhmetajCR who spotted some flaws in my latest changes. Thanks a lot
[8.0.1]
- Bugfixes and improvements for certain edge cases thanks to @KnightOfBlackLily and @kuhnroyal
[8.0.0]
- official new release with all the changes
[8.0.0-pre-7] - 12.08.2024
- adding cachedFatories and better scope protection against race conditions
[8.0.0-pre-6] - 11.08.2024
- testing weak references in lazySingeltons
[8.0.0-pre-5] - 25.06.2024
- adding
changeTypeInstanceName
[8.0.0-pre-4] - 03.06.2024
- fixing bug in
unregisterthat happened if you tried to unregister a named registration by providing an instance instead of the type and the instance name
[8.0.0-pre-3] - 31.05.2024
- releaseInstance will now throw if the instance isn't registered
[8.0.0-pre-2] - 29.05.2024
- fixing negative reference count
[8.0.0-pre-1] - 26.05.2024
getAll()andgetAllAsync()now have afromAllScopesparameter.- adding safeguards according to https://github.com/fluttercommunity/get_it/issues/364 to make it impossible to call
push/popScopewhile theinit()function of another pushScope is running. - fixed an unsafe type check when using a runtime type to access an object in get_it.
[7.7.0] - 15.04.2024
- thanks to the PR by @kasefuchs https://github.com/fluttercommunity/get_it/pull/361
getAllis now available in an async version too.
[7.6.9] - 11.04.2024
- fig for bug that was introduced in 7.6.8 https://github.com/fluttercommunity/get_it/issues/358
[7.6.8] - 03.04.2024
- merged PR by @venkata-reddy-dev https://github.com/fluttercommunity/get_it/pull/356 adding new
skipDoubleRegistrationflag for testing
[7.6.7] - 18.01.2024
- merged PR by @subzero911 https://github.com/fluttercommunity/get_it/pull/330
[7.6.6] - 04.01.2024
- Thanks to PR by @bvoq
getIt.reset, getIt.popScope, getIt.dropScopenow dispose registered objects in the reverse order in which they were registered.
[7.6.5] - 25.09.2023
- updated Discord link
[7.6.4] - 04.09.2023
- fixed the throwing of a StateError that was previously thrown as String
[7.6.3] - 04.09.2023
- push new version because pub didn't list this one
[7.6.2] - 31.08.2023
- fix linter error
[7.6.1] - 31.08.2023
- added
isFinalscope parameter which fixes https://github.com/fluttercommunity/get_it/issues/326 - version bump of dependencies and updates readme
[7.6.0] - 09.05.2023
- 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
[7.5.0] - 07.05.2023
- 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.
[7.4.1]
- PR from @dzziwny which fixed an edge case with LazySingletons https://github.com/fluttercommunity/get_it/pull/284
- Changed an assertion in case that an object is not registered to an Exception that also will throw in real time so that you get meaningful errors based on https://github.com/fluttercommunity/get_it/issues/312
[7.4.0]
registerSingletonnow returns the passed instance as a return value thanks to the PR by @Rexios80 https://github.com/fluttercommunity/get_it/pull/242- In some cases GetIt will print error messages to the debug output. Now this won't happen anymore in release mode and can be completely disabled by setting
GetIt.noDebugOutput=truefollowing the PR from @James1345
[7.3.0]
New features:
popScopeTilgot a new optionalinclusiveparameter so you can now decide if scope with the passed name should be popped too or only the ones above- PR by @jtdLab that adds to reset a LazySingleton by providing an existing instance
- Fix for an internal state error by @ioantsaf
- Fix for a rare edge case if you manually
signalReady - Many PRs with improvements to spelling and grammar of readme, source documentation and even one assert message by @selcukguvel @isinghmitesh @UsamaKarim @nilsreichardt and Os-Prog @Ae-Mc
[7.2.0]
- fix for https://github.com/fluttercommunity/get_it/issues/210
- Parameters of factories are no longer needed to be casted because they are nullable
- downgraded the dependency on
asyncto 2.6 again - you couldn't push two Scopes without a name
[7.1.4]
- fixed bug with manual synchronization of SingletonsWithDependencies https://github.com/fluttercommunity/get_it/issues/196
[7.1.3] - 07.05.2021
[7.1.2] - 06.05.2021
- Thanks to the clever PR https://github.com/fluttercommunity/get_it/pull/185 by @kmartins
unregisterandresetLazySingletonnow only have to be awaited if you use an async disposal function.
[7.1.1] - 05.05.2021
pushNewScope()now got an optionalinitparameter where you can pass a function that registers new objects inside the newly pushed Scope. Doing the registration in this function ensures that theonScopeChangedcall-back is called after the objects are registered.
[7.1.0] - 05.05.2021
- The new
Disposableinterface 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;
[7.0.0] - 02.05.2021
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
[6.1.1] - 13.04.2021
- small fix in getAsync with parameters
[6.1.0] - 12.04.2021
- 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
currentScopeNameto query the name of the currently active scope https://github.com/fluttercommunity/get_it/issues/153 popScopewill know throw an Exception instead just an assert if you are already on thebaseScopeand you try to pop it.
[6.0.0] - 15.02.2021
- Official null safety release
[5.0.2] - 08.12.2020
- fixed https://github.com/fluttercommunity/get_it/issues/138 when calling
unRegisterthe dispose function that can be passed when registering wasn't called.
[5.0.1] - 23.09.2020
- fixed formatting in readme
[5.0.0-mixin-version] - 17.09.2020
- experimental
[5.0.0] - 15.09.2020
- New scope support for registration
- optional dispose functions for registered objects
- Breaking change:
reset()now is async and returns aFuturebecause 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.
[5.0.0-alpha] - 11.09.2020
- alpha version of V5.0
[4.0.4] - 22.07.2020
- fixed linter errors
[4.0.3] - 22.07.2020
- fixes of several typos thanks to PRs from @Bryanx, @sspatari
- fixed error https://github.com/fluttercommunity/get_it/issues/92
[4.0.2] - 26.04.2020
- removed too strong type check for passed factory parameter
- fixed error message https://github.com/fluttercommunity/get_it/issues/69
[4.0.1] - 19.03.2020
- overhauled readme
- removed unnecessary print statement
[4.0.0] - 26.02.2020
- Added abstract
WillSignalReadyclass
[4.0.0-release-candidate] - 14.02.2020
- Breaking changes in API!!!
- Release candidate
- New Async functions
- Factories with parameters
- Improved startup synchronisation
[3.0.2] - 23.10.2019
- Bugfix when using named instances
[3.0.1] - 24.09.2019
[3.0.0+1] - 07.09.2019
- Small fix to make the analyser happy
[3.0.0] - 07.09.2019
- Overhauled the signalling API because the way it was was not optimal. Now you can either signal globally or by passing the instance of the registered object that shall signal. This way it's ensured that you have to have access to the instance to signal, typically from within the instance with a
GetIt.instance.signalReady(this)individual signalling from other places but the instance itself is probably an error. - Unregister of singletons /lazysingletons now possible also over a registered instance.
- Most asserts have bin replaced with throwing
Errorobjects. - The example now shows the ready signalling.
[2.1.0] - 26.08.2019
- Added handy ready signal to make start-up logic a bit easier
- Unregister of Objects now possible with optional disposing function
[2.0.3] - 26.08.2019
- Small fix
[2.0.2] - 19.08.2019
- Small fix
[2.0.1] - 19.08.2019
- Small fix
[2.0.0] - 18.08.2019
- Breaking Change with V2.0.0
you no longer can directly create instances of the type
GetItbecauseGetItis now a singleton please see README
[1.1.0] - 18.08.2019
- added named registration
[1.0.3+2] - 26.06.2019
- updated logo in readme
[1.0.3+1] - 22.05.2019
- updated authors
[1.0.3] - 01.03.2019
- Small fix so that intellisense works now if you use the short calling form without using
.get()
[1.0.2] - 22.06.2018
- Moved package to Flutter Community
[1.0.1] - 20.06.2018
- Added
reset()method
[1.0.0] - 22.05.2018
- Initial release
Installing
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add 'get_it:9.3.0'pubspec.yaml
name: get_it
description: 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"
version: 9.3.0
maintainer: Thomas Burkhart (@escamoteur)
homepage: https://github.com/flutter-it/get_it
repository: https://github.com/flutter-it/get_it
funding:
- https://github.com/sponsors/escamoteur/
screenshots:
- description: 'get_it logo'
path: get_it.png
environment:
sdk: '>=3.0.0 <4.0.0'
dependencies:
async: ^2.11.0
collection: ^1.17.1
meta: ^1.9.1
dev_dependencies:
leak_tracker: ^11.0.0
lint: ^2.14.0
test: ^1.32.0
devtools:
extension: extension/devtools/
Version history
| Version | Published | Archive | SHA-256 |
|---|---|---|---|
| 1.0.0 | On demand | Download | e2082c3f…afb8d4 |
| 1.0.0+1 | On demand | Download | ee4741b0…43f993 |
| 1.0.0+2 | On demand | Download | 404cbeab…c0ed6d |
| 1.0.1 | On demand | Download | b4abf383…5b4561 |
| 1.0.1+1 | On demand | Download | bfff2ada…98dfa6 |
| 1.0.2 | On demand | Download | 11632f9a…3a2db8 |
| 1.0.3 | On demand | Download | 52c2c766…b36cfb |
| 1.0.3+1 | On demand | Download | 88fc4161…4135b6 |
| 1.0.3+2 | On demand | Download | 0aebadde…6eb945 |
| 1.1.0 | On demand | Download | 7d317500…3cac2e |
| 2.0.0 | On demand | Download | 39e0c43f…e719ec |
| 2.0.1 | On demand | Download | f065c6b9…7a282c |
| 2.0.3 | On demand | Download | c90c077a…371629 |
| 2.1.0 | On demand | Download | 9ed2921a…f40eba |
| 3.0.0 | On demand | Download | 1c8c313e…059e8d |
| 3.0.0+1 | On demand | Download | c1c2f3cb…2b18c9 |
| 3.0.1 | On demand | Download | 289d03b2…360d7b |
| 3.0.3 | On demand | Download | 167cd661…12314c |
| 3.1.0 | On demand | Download | a923c9d0…15be9c |
| 4.0.0-beta | On demand | Download | ad4c9d9a…f7c8dc |
| 4.0.0-beta2 | On demand | Download | 5d3830f1…22a509 |
| 4.0.0-beta3 | On demand | Download | 1a417f13…f92f26 |
| 4.0.0-release-candidate | On demand | Download | e8916206…112df1 |
| 4.0.0 | On demand | Download | 1164e2be…8a4fa4 |
| 4.0.1 | On demand | Download | fb9db5a5…50468d |
| 4.0.2 | On demand | Download | b2571d11…66d155 |
| 4.0.3 | On demand | Download | 80689465…1c849a |
| 4.0.4 | On demand | Download | 640ada5e…62faa9 |
| 5.0.0-alpha | On demand | Download | 66a65bad…2bf481 |
| 5.0.0-alpha2 | On demand | Download | b0122330…5917bd |
| 5.0.0-mixin-version | On demand | Download | 256c4770…b8b81c |
| 5.0.0 | On demand | Download | 305e4531…8208d4 |
| 5.0.1 | On demand | Download | ae79ddad…7b782b |
| 5.0.2 | On demand | Download | 2630ad8b…230efd |
| 5.0.3 | On demand | Download | 8692496c…d6c4da |
| 5.0.4 | On demand | Download | 2caea674…b12c33 |
| 5.0.5 | On demand | Download | e1e34c52…386bfe |
| 5.0.6 | On demand | Download | aa1c18b3…e6b2fd |
| 6.0.0-nullsafety.1 | On demand | Download | 9a10fcfc…a2e5d1 |
| 6.0.0-nullsafety.2 | On demand | Download | 4d8ac8b4…15f2f8 |
| 6.0.0 | On demand | Download | a36b6e1d…4d48bb |
| 6.1.0 | On demand | Download | 265b41d4…bd7bd9 |
| 6.1.1 | On demand | Download | 2d5100a9…8aec00 |
| 7.0.0 | On demand | Download | 6d2cd313…32c32a |
| 7.1.0 | On demand | Download | 057d1e13…2695e3 |
| 7.1.1 | On demand | Download | 6a3d3f94…a96aa4 |
| 7.1.2 | On demand | Download | dec995de…09fa57 |
| 7.1.3 | On demand | Download | 227cc33b…b5fd2d |
| 7.1.4 | On demand | Download | d8410435…d203cf |
| 7.2.0 | On demand | Download | 290fde3a…751ab7 |
| 7.3.0 | On demand | Download | f9982979…37f463 |
| 7.4.0 | On demand | Download | d7d31d8b…f9d52f |
| 7.4.1 | On demand | Download | ca77bd0c…70f804 |
| 7.5.0 | On demand | Download | 43133b45…bef113 |
| 7.6.0 | On demand | Download | 529de303…cd7468 |
| 7.6.1 | On demand | Download | 98b6d726…2775f1 |
| 7.6.1+1 | On demand | Download | a0008dec…9bd56a |
| 7.6.2 | On demand | Download | 66c270f2…9fe4a7 |
| 7.6.3 | On demand | Download | 5a4ef481…6ce4b5 |
| 7.6.4 | On demand | Download | f7987088…ea83c3 |
| 7.6.6 | On demand | Download | d0b88dc3…4ba07e |
| 7.6.7 | On demand | Download | e6017ce7…7bafd7 |
| 7.6.8 | On demand | Download | 36524bfb…bfaeb9 |
| 7.6.9 | On demand | Download | ae30b28c…0b0270 |
| 7.7.0 | On demand | Download | d85128a5…9fbac1 |
| 8.0.0-pre-1 | On demand | Download | ef262ba8…f7b25d |
| 8.0.0-pre-2 | On demand | Download | 345afb4d…62d4f1 |
| 8.0.0-pre-3 | On demand | Download | 671dc501…d423bf |
| 8.0.0-pre-4 | On demand | Download | a4a2d9c3…10bd6e |
| 8.0.0-pre-5 | On demand | Download | 5d4088c3…3bc532 |
| 8.0.0-pre-6 | On demand | Download | b83a0126…709237 |
| 8.0.0-pre-7 | On demand | Download | c44ccb8b…563c8d |
| 8.0.0 | On demand | Download | ff97e5e7…c4eb5e |
| 8.0.1 | On demand | Download | 35c253f8…f330cd |
| 8.0.2 | On demand | Download | c49895c1…cebd15 |
| 8.0.3 | On demand | Download | f126a3e2…743103 |
| 8.1.0 | On demand | Download | e87cd1d1…d0a389 |
| 8.2.0 | On demand | Download | a4292e7c…44297b |
| 8.3.0 | On demand | Download | ae78de7c…c0efa9 |
| 9.0.0 | On demand | Download | 11042bae…e90202 |
| 9.0.1 | On demand | Download | 44ec3859…858de1 |
| 9.0.2 | On demand | Download | 5089fa71…827f64 |
| 9.0.3 | On demand | Download | e9e6b711…162553 |
| 9.0.4 | On demand | Download | ae5a1f10…18eb8f |
| 9.0.5 | On demand | Download | 84792561…429956 |
| 9.1.0 | On demand | Download | 368c1abd…334b7d |
| 9.1.1 | On demand | Download | 2c120112…d38543 |
| 9.2.0 | On demand | Download | 1d648d2d…f32e56 |
| 9.2.1 | Cached · Upstream SHA-256 matched | Download | 568d62f0…461f66 |
| 9.3.0 | Cached · Upstream SHA-256 matched | Download | 2b5c6b07…e74874 |
Dependencies
async "^2.11.0"
collection "^1.17.1"
meta "^1.9.1"