GetXify

GetXify

pub package CI codecov License: MIT style: flutter_lints

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 & navigationpreventDuplicates, nested GetRouterOutlet, middleware pipeline, browser back, predictive back, and deep links all fixed
  • System back & popPopScope / WillPopScope / canPop respected on Android, Web, and iOS edge-swipe
  • Dependency injection — deferred disposal, fenix registrations, route-scoped controllers, and Get.putAsync restored
  • State managementGetBuilder tag changes, RxList/RxSet/RxMap default constructors, bindStream leak fixed
  • Dialogs, sheets & snackbarsGet.close() result forwarding, idempotent SnackbarController, queue robustness
  • Reactive typesassign/assignAll notify exactly once, unmodifiable backing collections handled
  • InternationalizationscriptCode lookup, 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.tr translations with CLDR plural support
  • Theme management — light/dark theme switching without rebuilding the tree
  • Platform utilitiesGetPlatform, 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 Routes class
  • Dynamic route parameters
  • Page transitions
  • Reactive state with .obs
  • GetxService for global state
  • Lazy bindings
cd example
flutter pub get
flutter run

Breaking changes from GetX

v4.0.0

  • Get.back() now returns bool — callers ignoring the result are unaffected
  • iOS back-swipe starts only near the leading edge by default — use popGesture: true to restore full-screen

v2.0.0

  • Removed GetUtils validation/string helpers — use validators or recase
  • Removed several extensions (double_extensions, duration_extensions, widget_extensions, etc.)

v1.0.0

  • Removed GetConnect HTTP/WebSocket module — use dio or http
  • 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/get_navigation
get_navigation/src/bottomsheet/bottomsheet
get_navigation/src/dialog/dialog_route
get_navigation/src/extension_navigation
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_navigation_interface
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_navigator
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