GetXify

GetXify is a modernized, actively maintained fork of GetX — an extra-light and powerful solution for Flutter. It brings high-performance state management, intelligent dependency injection, and route management while staying fully API-compatible with GetX.
What's new in v4.0.0
v4.0.0 is a landmark release, contributed entirely by @Baghdady92, who resolved 111 issues from the upstream GetX tracker and grew the test suite from 144 to 494 passing tests. Key areas improved:
- Routing & navigation —
preventDuplicates, nestedGetRouterOutlet, middleware pipeline, browser back, predictive back, and deep links all fixed - System back & pop —
PopScope/WillPopScope/canPoprespected on Android, Web, and iOS edge-swipe - Dependency injection — deferred disposal, fenix registrations, route-scoped controllers, and
Get.putAsyncrestored - State management —
GetBuildertag changes,RxList/RxSet/RxMapdefault constructors,bindStreamleak fixed - Dialogs, sheets & snackbars —
Get.close()result forwarding, idempotentSnackbarController, queue robustness - Reactive types —
assign/assignAllnotify exactly once, unmodifiable backing collections handled - Internationalization —
scriptCodelookup, explicit locale vs device locale, CLDR plural categories
See the full CHANGELOG for details.
Why GetXify over GetX?
| GetX | GetXify | |
|---|---|---|
| Dart SDK | legacy | ^3.12.2 |
| Flutter | legacy | >=3.44.2 |
| Deprecated APIs | present | removed |
| Test suite | 144 tests | 494 tests |
| Upstream bug fixes | — | 111 resolved |
| GetConnect (HTTP) | included | removed* |
* Use dio or http instead — keeping GetXify focused on its core.
Installation
dependencies:
getxify: ^4.0.0
import 'package:getxify/getxify.dart';
Migrating from GetX
// Before
import 'package:get/get.dart';
// After
import 'package:getxify/getxify.dart';
That's it — the API is fully compatible. Also update your pubspec.yaml:
# Before
dependencies:
get: ...
# After
dependencies:
getxify: ^4.0.0
Quick start
void main() => runApp(GetMaterialApp(home: Home()));
class CounterController extends GetxController {
var count = 0.obs;
void increment() => count++;
}
class Home extends StatelessWidget {
final c = Get.put(CounterController());
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Obx(() => Text('Clicks: ${c.count}'))),
body: Center(
child: ElevatedButton(
onPressed: () => Get.to(OtherPage()),
child: const Text('Go to Other'),
),
),
floatingActionButton: FloatingActionButton(
onPressed: c.increment,
child: const Icon(Icons.add),
),
);
}
}
class OtherPage extends StatelessWidget {
final c = Get.find<CounterController>();
@override
Widget build(BuildContext context) {
return Scaffold(body: Center(child: Obx(() => Text('${c.count}'))));
}
}
Key features
- State management — reactive (
.obs+Obx) and simple (GetBuilder) state managers - Route management — named routes, nested navigation, middleware, transitions, deep links
- Dependency injection — smart lifecycle-aware DI with
Get.put,Get.lazyPut,Get.find, bindings - Internationalization —
.trtranslations with CLDR plural support - Theme management — light/dark theme switching without rebuilding the tree
- Platform utilities —
GetPlatform, responsive breakpoints, context extensions
Example app
A full example app is in the example/ directory, demonstrating:
- Nested routing with
GetRouterOutlet - Route guards (
EnsureAuthMiddleware,EnsureNotAuthedMiddleware) - Named routes with type-safe
Routesclass - Dynamic route parameters
- Page transitions
- Reactive state with
.obs GetxServicefor global state- Lazy bindings
cd example
flutter pub get
flutter run
Breaking changes from GetX
v4.0.0
Get.back()now returnsbool— callers ignoring the result are unaffected- iOS back-swipe starts only near the leading edge by default — use
popGesture: trueto restore full-screen
v2.0.0
- Removed
GetUtilsvalidation/string helpers — usevalidatorsorrecase - Removed several extensions (
double_extensions,duration_extensions,widget_extensions, etc.)
v1.0.0
- Removed
GetConnectHTTP/WebSocket module — usedioorhttp - Removed mini stream utilities — use standard Dart streams or
rxdart - All deprecated GetX APIs removed
Contributing
See CONTRIBUTING.md for setup instructions, coding standards, and the PR workflow.
License
GetXify is released under the MIT License. See LICENSE for details.
Includes work by @Baghdady92 and originally forked from GetX by Jonatas Borges.
Libraries
- get_animations/animations
- get_animations/extensions
- get_animations/get_animated_builder
- get_animations/index
- get_common/get_reset
- get_common/obx_error
- get_core/get_core
- get_core/src/flutter_engine
- get_core/src/get_interface
- get_core/src/get_main
- get_core/src/log
- get_core/src/smart_management
- get_core/src/typedefs
- get_instance/get_instance
- get_instance/src/bindings_interface
- get_instance/src/extension_instance
- get_instance/src/lifecycle
- get_navigation/src/bottomsheet/bottomsheet
- get_navigation/src/dialog/dialog_route
- get_navigation/src/root/get_cupertino_app
- get_navigation/src/root/get_material_app
- get_navigation/src/root/get_root
- get_navigation/src/root/internationalization
- get_navigation/src/router_report
- get_navigation/src/routes/core/default_route
- get_navigation/src/routes/core/get_route
- get_navigation/src/routes/core/modules
- get_navigation/src/routes/core/route_middleware
- get_navigation/src/routes/core/test_kit
- get_navigation/src/routes/index
- get_navigation/src/routes/observers/route_observer
- get_navigation/src/routes/router/get_information_parser
- get_navigation/src/routes/router/get_route_information_provider
- get_navigation/src/routes/router/get_router_delegate
- get_navigation/src/routes/router/page_settings
- get_navigation/src/routes/router/parse_route
- get_navigation/src/routes/router/route_report
- get_navigation/src/routes/router/router_outlet
- get_navigation/src/routes/transitions/circular_reveal_clipper
- get_navigation/src/routes/transitions/custom_transition
- get_navigation/src/routes/transitions/default_transitions
- get_navigation/src/routes/transitions/get_transition_mixin
- get_navigation/src/routes/transitions/transitions_type
- get_navigation/src/routes/url_strategy/impl/io_url
- get_navigation/src/routes/url_strategy/impl/stub_url
- get_navigation/src/routes/url_strategy/impl/web_url
- get_navigation/src/routes/url_strategy/url_strategy
- get_navigation/src/snackbar/snackbar
- get_navigation/src/snackbar/snackbar_controller
- get_rx/get_rx
- get_rx/src/rx_typedefs/rx_typedefs
- get_rx/src/rx_types/rx_types
- get_rx/src/rx_workers/rx_workers
- get_rx/src/rx_workers/utils/debouncer
- get_state_manager/get_state_manager
- get_state_manager/src/rx_flutter/rx_getx_widget
- get_state_manager/src/rx_flutter/rx_notifier
- get_state_manager/src/rx_flutter/rx_obx_widget
- get_state_manager/src/rx_flutter/rx_ticker_provider_mixin
- get_state_manager/src/simple/get_controllers
- get_state_manager/src/simple/get_responsive
- get_state_manager/src/simple/get_state
- get_state_manager/src/simple/get_view
- get_state_manager/src/simple/get_widget_cache
- get_state_manager/src/simple/list_notifier
- get_state_manager/src/simple/mixin_builder
- get_state_manager/src/simple/simple_builder
- get_utils/get_utils
- get_utils/src/equality/equality
- get_utils/src/extensions/context_extensions
- get_utils/src/extensions/event_loop_extensions
- get_utils/src/extensions/export
- get_utils/src/extensions/internationalization
- get_utils/src/extensions/iterable_extensions
- get_utils/src/platform/platform
- get_utils/src/platform/platform_io
- get_utils/src/platform/platform_stub
- get_utils/src/platform/platform_web
- get_utils/src/platform/platform_web_detect
- get_utils/src/queue/get_queue
- getxify