SINT
State, Injection, Navigation, Translation — The Four Pillars of High-Fidelity Flutter Infrastructure.
- About SINT
- Installing
- The Four Pillars
- Counter App with SINT
- Migration from GetX
- Origin & Philosophy
About SINT
SINT is an architectural evolution of GetX (v5.0.0-rc), built as a focused framework around four pillars only:
| Pillar | Responsibility |
|---|---|
| S — State Management | SintController, SintBuilder, Obx, .obs, Rx types, Workers |
| I — Injection | Sint.put, Sint.find, Sint.lazyPut, Bindings, SmartManagement |
| N — Navigation | SintPage, Sint.toNamed, middleware, SintMaterialApp, transitions |
| T — Translation | .tr extension, Translations class, locale management |
Everything outside these four pillars has been removed: no HTTP client, no animations, no string validators, no generic utilities. The result is 37.7% less code than GetX — 12,849 LOC vs 20,615 LOC.
Key principles:
- PERFORMANCE: No Streams or ChangeNotifier overhead. Minimal RAM consumption.
- PRODUCTIVITY: Simple syntax. One import:
import 'package:sint/sint.dart'; - ORGANIZATION: Clean Architecture structure. 5 modules, each mapping to a pillar.
Installing
Add SINT to your pubspec.yaml:
dependencies:
sint: ^1.0.0
Import it:
import 'package:sint/sint.dart';
High-Fidelity Performance (Benchmarks)
SINT is built for speed. Every pillar is audited against the Open Neom Standard to ensure minimal latency in high-load scenarios.
Current Performance Audit (v1.0.0) Pillar Metric Result Context S (State) Reactive Core Speed 5.0151 µs/op 30,000 updates stress test T (Translation) Dynamic Interpolation 2.1614 µs/op 10,000 trParams lookups I (Injection) Registry Lookup 1.1688 µs/find Depth 10 dependency resolution N (Navigation) Middleware Latency 1,504 µs 5-layer middleware chain execution Core Sync Latency 803 µs Stream-to-Rx event synchronization
Why SINT is Faster: • Pillar S: SINT avoids Stream overhead by using microtasks for high-fidelity notifications. • Pillar I: Dependency resolution uses O(1) hash lookups in the global registry. • Pillar N: Navigation is context-less, removing the need for heavy widget tree lookups during routing.
The Four Pillars
State Management (S)
Two approaches: Reactive (.obs + Obx) and Simple (SintBuilder).
// Reactive
var count = 0.obs;
Obx(() => Text('${count.value}'));
// Simple
SintBuilder<Controller>(
builder: (_) => Text('${_.counter}'),
)
Injection (I)
Dependency injection without context:
Sint.put(AuthController());
final controller = Sint.find<AuthController>();
Navigation (N)
Route management without context:
SintMaterialApp(
getPages: [
SintPage(name: '/', page: () => Home()),
SintPage(name: '/details', page: () => Details()),
],
)
Sint.toNamed('/details');
Sint.back();
Sint.snackbar('Title', 'Message');
Translation (T)
Internationalization with .tr:
Text('hello'.tr);
Text('welcome'.trParams({'name': 'Serzen'}));
Sint.updateLocale(Locale('es', 'ES'));
Counter App with SINT
void main() => runApp(SintMaterialApp(home: Home()));
class Controller extends SintController {
var count = 0.obs;
increment() => count++;
}
class Home extends StatelessWidget {
@override
Widget build(context) {
final c = Sint.put(Controller());
return Scaffold(
appBar: AppBar(title: Obx(() => Text("Clicks: ${c.count}"))),
body: Center(
child: ElevatedButton(
child: Text("Go to Other"),
onPressed: () => Sint.to(Other()),
),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: c.increment,
),
);
}
}
class Other extends StatelessWidget {
final Controller c = Sint.find();
@override
Widget build(context) {
return Scaffold(body: Center(child: Text("${c.count}")));
}
}
Migration from GetX
- Replace
get:withsint:inpubspec.yaml - Replace
import 'package:get/get.dart'withimport 'package:sint/sint.dart' - Your existing
Get.calls work — gradually replace withSint.to remove deprecation warnings GetMaterialApp→SintMaterialAppGetPage→SintPage
Origin & Philosophy
SINT is a hard fork of GetX v5.0.0-rc. After 8 years of accumulated code, GetX's repository became inactive and carried significant unused weight. SINT strips away everything that does not serve the four pillars, resulting in a clean, maintainable foundation built with Clean Architecture principles.
GetX: "Do everything." SINT: "Do the right things."
S + I + N + T — State, Injection, Navigation, Translation. Nothing more, nothing less.
License
SINT is released under the MIT License.
Part of the Open Neom ecosystem.
Libraries
- core/sint_core
- core/src/domain/enums/smart_management
- core/src/domain/errors/bind_error
- core/src/domain/errors/obx_error
- core/src/domain/extensions/sint_reset
- core/src/domain/interfaces/sint_interface
- core/src/domain/models/rx_bool
- core/src/domain/models/rx_custom
- core/src/domain/models/rx_impl
- core/src/domain/models/rx_interface
- core/src/domain/models/rx_list
- core/src/domain/models/rx_map
- core/src/domain/models/rx_num
- core/src/domain/models/rx_set
- core/src/domain/models/rx_string
- core/src/domain/typedefs/core_typedefs
- core/src/domain/typedefs/legacy_typedefs
- core/src/sint_engine
- core/src/sint_main
- core/src/sint_queue
- core/src/utils/log
- core/src/utils/testing/wrapper
- core/src/utils/testing/wrapper_named
- core/src/utils/testing/wrapper_translations
- injection/sint_injection
- injection/src/bind
- injection/src/domain/extensions/injection_extension
- injection/src/domain/interfaces/binding
- injection/src/domain/interfaces/bindings_interface
- injection/src/domain/models/binds
- injection/src/domain/models/instance_info
- injection/src/domain/typedefs/injection_typedefs
- injection/src/lifecycle
- injection/src/ui/bind_element
- injection/src/ui/binder
- navigation/src/domain/enums/pop_mode
- navigation/src/domain/enums/prevent_duplicate_handling_mode
- navigation/src/domain/enums/row_style
- navigation/src/domain/enums/snack_hover_state
- navigation/src/domain/enums/snackbar_position
- navigation/src/domain/enums/snackbar_status
- navigation/src/domain/enums/snackbar_style
- navigation/src/domain/enums/transition
- navigation/src/domain/extensions/bottomsheet_extension
- navigation/src/domain/extensions/context_extensions
- navigation/src/domain/extensions/dialog_extension
- navigation/src/domain/extensions/event_loop_extension
- navigation/src/domain/extensions/first_where_extension
- navigation/src/domain/extensions/overlay_extension
- navigation/src/domain/extensions/page_arg_extension
- navigation/src/domain/extensions/snackbar_extension
- navigation/src/domain/interfaces/custom_transition
- navigation/src/domain/interfaces/sint_middleware
- navigation/src/domain/mixins/sint_transition_mixin
- navigation/src/domain/models/config_data
- navigation/src/domain/models/path_decoded
- navigation/src/domain/models/route_data
- navigation/src/domain/models/route_node
- navigation/src/domain/models/routing
- navigation/src/router/circular_reveal_clipper
- navigation/src/router/index
- navigation/src/router/middleware_runner
- navigation/src/router/page_redirect
- navigation/src/router/page_settings
- navigation/src/router/route_decoder
- navigation/src/router/route_match_result
- navigation/src/router/route_matcher
- navigation/src/router/route_parser
- navigation/src/router/route_tree
- navigation/src/router/route_tree_result
- navigation/src/router/router_report_manager
- navigation/src/router/sint_delegate
- navigation/src/router/sint_information_parser
- navigation/src/router/sint_page
- navigation/src/router/sint_page_route
- navigation/src/router/sint_test_mode
- navigation/src/router/url_strategy/impl/io_url
- navigation/src/router/url_strategy/impl/stub_url
- navigation/src/router/url_strategy/impl/web_url
- navigation/src/router/url_strategy/url_strategy
- navigation/src/ui/bottomsheet/modal_bottomsheet_layout
- navigation/src/ui/bottomsheet/modal_bottomsheet_route
- navigation/src/ui/dialog/dialog_route
- navigation/src/ui/sint_cupertino_app
- navigation/src/ui/sint_material_app
- navigation/src/ui/sint_root
- navigation/src/ui/snackbar/snackbar
- navigation/src/ui/snackbar/snackbar_controller
- navigation/src/ui/snackbar/snackbar_queue
- navigation/src/ui/transitions/circular_reveal_transition
- navigation/src/ui/transitions/fade_in_transition
- navigation/src/ui/transitions/left_to_right_fade_transition
- navigation/src/ui/transitions/no_transition
- navigation/src/ui/transitions/right_to_left_fade_transition
- navigation/src/ui/transitions/size_transitions
- navigation/src/ui/transitions/slide_down_transition
- navigation/src/ui/transitions/slide_left_transition
- navigation/src/ui/transitions/slide_right_transition
- navigation/src/ui/transitions/slide_top_transition
- navigation/src/ui/transitions/zoom_in_transition
- navigation/src/ui/widgets/directionality_drag_gesture_recognizer
- navigation/src/ui/widgets/sint_back_gesture_controller
- navigation/src/ui/widgets/sint_back_gesture_detector
- sint
- SINT Framework 1.0.0
- state_manager/sint_state_manager
- state_manager/src/domain/mixins/equality_mixin
- state_manager/src/domain/mixins/rx_ticket_provider_mixin
- state_manager/src/domain/notify_data
- state_manager/src/domain/sint_status
- state_manager/src/domain/typedefs/state_typedefs
- state_manager/src/engine/get_builder
- state_manager/src/engine/list_notifier
- state_manager/src/engine/notifier
- state_manager/src/engine/sint_controller
- state_manager/src/sint_listenable
- state_manager/src/ui/obx_reacive_element
- state_manager/src/ui/obx_widget
- translation/sint_translation
- translation/src/domain/extensions/locale_extension
- translation/src/domain/extensions/trans_extension
- translation/src/domain/interfaces/translations
- translation/src/domain/models/intl_host
- translation/src/utils/translations_constants